mirror of
https://github.com/bitwarden/browser
synced 2025-12-15 15:53:27 +00:00
Move web to apps/web and bitwarden_license/bit-web
This commit is contained in:
307
apps/web/src/scss/base.scss
Normal file
307
apps/web/src/scss/base.scss
Normal file
@@ -0,0 +1,307 @@
|
||||
html {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
body {
|
||||
min-width: 1010px;
|
||||
|
||||
&.layout_frontend {
|
||||
@media (prefers-color-scheme: dark) {
|
||||
background-color: $darkDarkBlue2;
|
||||
}
|
||||
@media (prefers-color-scheme: light) {
|
||||
background-color: $white;
|
||||
}
|
||||
@include themify($themes) {
|
||||
background-color: themed("layoutFrontendColor");
|
||||
color: themed("textHeadingColor");
|
||||
}
|
||||
}
|
||||
|
||||
@include themify($themes) {
|
||||
background-color: themed("backgroundColor");
|
||||
color: themed("textColor");
|
||||
}
|
||||
|
||||
&.full-width:not(.layout_frontend) {
|
||||
.container {
|
||||
min-width: 980px;
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
margin: 0 auto;
|
||||
max-width: none !important;
|
||||
padding: 0;
|
||||
width: 980px;
|
||||
}
|
||||
|
||||
.page-header,
|
||||
.secondary-header,
|
||||
.tabbed-header {
|
||||
margin-bottom: 0.5rem;
|
||||
padding-bottom: 0.6rem;
|
||||
|
||||
&:not(.text-danger) {
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
margin: 0;
|
||||
@include themify($themes) {
|
||||
color: themed("textHeadingColor");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page-header,
|
||||
.secondary-header {
|
||||
@include themify($themes) {
|
||||
border-bottom: 1px solid themed("separator");
|
||||
}
|
||||
}
|
||||
|
||||
.secondary-header,
|
||||
.spaced-header {
|
||||
margin-top: 4rem;
|
||||
}
|
||||
|
||||
.tabbed-header {
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
img.logo {
|
||||
display: block;
|
||||
height: 43px;
|
||||
margin: 0 auto;
|
||||
width: 284px;
|
||||
|
||||
&.logo-themed {
|
||||
@include themify($themes) {
|
||||
content: url("../images/logo-" + themed("logoSuffix") + "@2x.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page-content {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.footer {
|
||||
margin-top: 40px;
|
||||
padding: 40px 0 40px 0;
|
||||
@include themify($themes) {
|
||||
border-top: 1px solid themed("separator");
|
||||
}
|
||||
}
|
||||
|
||||
hr,
|
||||
.dropdown-divider {
|
||||
@include themify($themes) {
|
||||
border-top: 1px solid themed("separatorHr");
|
||||
}
|
||||
}
|
||||
|
||||
.min-height-fix {
|
||||
min-height: 1px;
|
||||
}
|
||||
|
||||
.overflow-hidden {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.cursor-move {
|
||||
cursor: move !important;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5 {
|
||||
@include themify($themes) {
|
||||
color: themed("textHeadingColor");
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
&.spaced-header {
|
||||
@include themify($themes) {
|
||||
color: themed("textHeadingColor");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
@include themify($themes) {
|
||||
color: themed("linkColor");
|
||||
}
|
||||
|
||||
&.text-body {
|
||||
@include themify($themes) {
|
||||
color: themed("textHeadingColor") !important;
|
||||
font-weight: themed("linkWeight");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
code {
|
||||
@include themify($themes) {
|
||||
color: themed("codeColor");
|
||||
}
|
||||
}
|
||||
|
||||
.bwi-icon-above-input {
|
||||
height: 1.5em;
|
||||
}
|
||||
|
||||
.text-lg {
|
||||
font-size: $font-size-lg;
|
||||
}
|
||||
|
||||
.text-strike {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
.font-weight-semibold {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.btn:focus,
|
||||
.swal2-popup .swal2-actions button:focus,
|
||||
.btn.focus,
|
||||
.swal2-popup .swal2-actions button.focus,
|
||||
.form-control:focus {
|
||||
@include themify($themes) {
|
||||
box-shadow: 0 0 0 0.2rem themed("focus");
|
||||
}
|
||||
}
|
||||
|
||||
/* Override Bootstrap theming */
|
||||
|
||||
.bg-primary {
|
||||
@include themify($themes) {
|
||||
background-color: themed("bgPrimaryColor");
|
||||
}
|
||||
}
|
||||
|
||||
.bg-light {
|
||||
@include themify($themes) {
|
||||
background-color: themed("bgLightColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.bg-success {
|
||||
@include themify($themes) {
|
||||
background-color: themed("success") !important;
|
||||
color: themed("textSuccessColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.bg-warning {
|
||||
@include themify($themes) {
|
||||
background-color: themed("warning") !important;
|
||||
color: themed("textWarningColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.bg-error,
|
||||
.bg-danger {
|
||||
@include themify($themes) {
|
||||
background-color: themed("danger") !important;
|
||||
color: themed("textDangerColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.bg-info {
|
||||
@include themify($themes) {
|
||||
background-color: themed("info") !important;
|
||||
color: themed("textInfoColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.border-primary {
|
||||
@include themify($themes) {
|
||||
border-color: themed("borderPrimaryColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.border-warning {
|
||||
@include themify($themes) {
|
||||
border-color: themed("warning") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.border-danger {
|
||||
@include themify($themes) {
|
||||
border-color: themed("danger") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.border-info {
|
||||
@include themify($themes) {
|
||||
border-color: themed("info") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.text-success {
|
||||
@include themify($themes) {
|
||||
color: themed("success") !important;
|
||||
}
|
||||
|
||||
& > h1,
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
@include themify($themes) {
|
||||
color: themed("success") !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.text-warning {
|
||||
@include themify($themes) {
|
||||
color: themed("warning") !important;
|
||||
}
|
||||
|
||||
& > h1,
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
@include themify($themes) {
|
||||
color: themed("warning") !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.text-danger {
|
||||
&:not(.dropdown-item) {
|
||||
@include themify($themes) {
|
||||
color: themed("danger") !important;
|
||||
}
|
||||
|
||||
& > h1,
|
||||
h2,
|
||||
h3,
|
||||
h4 {
|
||||
@include themify($themes) {
|
||||
color: themed("danger") !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.text-muted {
|
||||
@include themify($themes) {
|
||||
color: themed("textMuted") !important;
|
||||
}
|
||||
}
|
||||
|
||||
button i.bwi {
|
||||
margin-right: 0.25rem;
|
||||
}
|
||||
253
apps/web/src/scss/buttons.scss
Normal file
253
apps/web/src/scss/buttons.scss
Normal file
@@ -0,0 +1,253 @@
|
||||
.btn-primary,
|
||||
.swal2-confirm {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnPrimary");
|
||||
border-color: themed("btnPrimary");
|
||||
color: themed("btnPrimaryText");
|
||||
}
|
||||
|
||||
&:hover:not(:disabled),
|
||||
&:active:not(:disabled) {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnPrimaryHover");
|
||||
border-color: themed("btnPrimaryBorderHover");
|
||||
color: themed("btnPrimaryText");
|
||||
}
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
opacity: 0.65;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-outline-primary {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnOutlinePrimaryBackground");
|
||||
border-color: themed("btnOutlinePrimaryBorder");
|
||||
color: themed("btnOutlinePrimaryText");
|
||||
}
|
||||
|
||||
&:hover:not(:disabled),
|
||||
&:active {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnOutlinePrimaryBackgroundHover");
|
||||
border-color: themed("btnOutlinePrimaryBorderHover");
|
||||
color: themed("btnOutlinePrimaryTextHover");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-secondary,
|
||||
.swal2-cancel {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnSecondary");
|
||||
border-color: themed("btnSecondaryBorder");
|
||||
color: themed("btnSecondaryText");
|
||||
}
|
||||
|
||||
&:hover:not(:disabled),
|
||||
&:active:not(:disabled) {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnSecondaryHover");
|
||||
border-color: themed("btnSecondaryBorderHover");
|
||||
color: themed("btnSecondaryTextHover");
|
||||
}
|
||||
}
|
||||
|
||||
&:disabled {
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
&:focus,
|
||||
&.focus {
|
||||
@include themify($themes) {
|
||||
box-shadow: 0 0 0 $btn-focus-width
|
||||
rgba(mix(color-yiq(themed("primary")), themed("primary"), 15%), 0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-outline-secondary {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnOutlineSecondaryBackground");
|
||||
border-color: themed("btnOutlineSecondaryBorder");
|
||||
color: themed("btnOutlineSecondaryText");
|
||||
}
|
||||
|
||||
&:hover:not(:disabled),
|
||||
&:active {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnOutlineSecondaryBackgroundHover");
|
||||
border-color: themed("btnOutlineSecondaryBorderHover");
|
||||
color: themed("btnOutlineSecondaryTextHover");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.show > .btn-outline-secondary {
|
||||
&.dropdown-toggle,
|
||||
&:focus {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnOutlineSecondaryBackground");
|
||||
border-color: themed("btnOutlineSecondaryBorder");
|
||||
color: themed("btnOutlineSecondaryText");
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnOutlineSecondaryBackgroundHover");
|
||||
border-color: themed("btnOutlineSecondaryBorderHover");
|
||||
color: themed("btnOutlineSecondaryTextHover");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-danger,
|
||||
.swal2-deny {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnDanger");
|
||||
border-color: themed("btnDanger");
|
||||
color: themed("btnDangerText");
|
||||
}
|
||||
|
||||
&:hover:not(:disabled),
|
||||
&:active:not(:disabled) {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnDangerHover");
|
||||
border-color: themed("btnDangerHover");
|
||||
color: themed("btnDangerText");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-outline-danger {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnOutlineDangerBackground");
|
||||
border-color: themed("btnOutlineDangerBorder");
|
||||
color: themed("btnOutlineDangerText");
|
||||
}
|
||||
|
||||
&:hover:not(:disabled),
|
||||
&:active {
|
||||
@include themify($themes) {
|
||||
background-color: themed("btnOutlineDangerBackgroundHover");
|
||||
border-color: themed("btnOutlineDangerBorderHover");
|
||||
color: themed("btnOutlineDangerTextHover");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-link {
|
||||
&:focus,
|
||||
&.focus {
|
||||
outline-color: -webkit-focus-ring-color;
|
||||
outline-offset: 1px;
|
||||
outline-style: auto;
|
||||
outline-width: 1px;
|
||||
}
|
||||
|
||||
&:not(.text-danger):not(.cursor-move) {
|
||||
@include themify($themes) {
|
||||
color: themed("btnLinkText");
|
||||
}
|
||||
}
|
||||
|
||||
&:hover:not(.text-danger):not(.cursor-move) {
|
||||
@include themify($themes) {
|
||||
color: themed("btnLinkTextHover");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-submit {
|
||||
position: relative;
|
||||
|
||||
.bwi-spinner {
|
||||
align-items: center;
|
||||
bottom: 0;
|
||||
display: none;
|
||||
justify-content: center;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
&:disabled:not(.manual),
|
||||
&.loading {
|
||||
.bwi-spinner {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
span {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
button.no-btn {
|
||||
background: transparent;
|
||||
border: none;
|
||||
padding: 0;
|
||||
color: inherit;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
.badge-primary {
|
||||
@include themify($themes) {
|
||||
background-color: themed("badgePrimaryBackground");
|
||||
color: themed("badgePrimaryText");
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@include themify($themes) {
|
||||
background-color: themed("badgePrimaryBackgroundHover");
|
||||
color: themed("badgePrimaryText");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.badge-secondary {
|
||||
@include themify($themes) {
|
||||
background-color: themed("badgeSecondaryBackground");
|
||||
color: themed("badgeSecondaryText");
|
||||
}
|
||||
}
|
||||
|
||||
.badge-info {
|
||||
@include themify($themes) {
|
||||
background-color: themed("badgeInfoBackground");
|
||||
color: themed("badgeInfoText");
|
||||
}
|
||||
}
|
||||
|
||||
.badge-danger {
|
||||
@include themify($themes) {
|
||||
background-color: themed("badgeDangerBackground");
|
||||
color: themed("badgeDangerText");
|
||||
}
|
||||
}
|
||||
|
||||
.badge-warning {
|
||||
@include themify($themes) {
|
||||
background-color: themed("warning");
|
||||
color: themed("textWarningColor");
|
||||
}
|
||||
}
|
||||
|
||||
.badge-success {
|
||||
@include themify($themes) {
|
||||
background-color: themed("success");
|
||||
color: themed("textSuccessColor");
|
||||
}
|
||||
}
|
||||
83
apps/web/src/scss/callouts.scss
Normal file
83
apps/web/src/scss/callouts.scss
Normal file
@@ -0,0 +1,83 @@
|
||||
.callout {
|
||||
border-left-width: 5px !important;
|
||||
border-radius: $card-inner-border-radius;
|
||||
margin-bottom: $alert-margin-bottom;
|
||||
padding: $alert-padding-y $alert-padding-x;
|
||||
@include themify($themes) {
|
||||
background-color: themed("calloutBackground");
|
||||
border: 1px solid themed("borderColor");
|
||||
color: themed("calloutColor");
|
||||
}
|
||||
|
||||
.callout-heading {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
h3.callout-heading {
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
&.callout-primary {
|
||||
@include themify($themes) {
|
||||
border-left-color: themed("primary");
|
||||
}
|
||||
.callout-heading {
|
||||
@include themify($themes) {
|
||||
color: themed("primary");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.callout-info {
|
||||
@include themify($themes) {
|
||||
border-left-color: themed("info");
|
||||
}
|
||||
|
||||
.callout-heading {
|
||||
@include themify($themes) {
|
||||
color: themed("info");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.callout-danger {
|
||||
@include themify($themes) {
|
||||
border-left-color: themed("danger");
|
||||
}
|
||||
|
||||
.callout-heading {
|
||||
@include themify($themes) {
|
||||
color: themed("danger");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.callout-success {
|
||||
@include themify($themes) {
|
||||
border-left-color: themed("success");
|
||||
}
|
||||
|
||||
.callout-heading {
|
||||
@include themify($themes) {
|
||||
color: themed("success");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.callout-warning {
|
||||
@include themify($themes) {
|
||||
border-left-color: themed("warning");
|
||||
}
|
||||
|
||||
.callout-heading {
|
||||
@include themify($themes) {
|
||||
color: themed("warning");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.enforced-policy-options ul {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
}
|
||||
98
apps/web/src/scss/cards.scss
Normal file
98
apps/web/src/scss/cards.scss
Normal file
@@ -0,0 +1,98 @@
|
||||
.card {
|
||||
@include themify($themes) {
|
||||
background-color: themed("foregroundColor");
|
||||
border-color: themed("borderColor");
|
||||
color: themed("textColor");
|
||||
}
|
||||
|
||||
&.text-danger {
|
||||
&.text-danger > .card-body {
|
||||
@include themify($themes) {
|
||||
color: themed("danger");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-header,
|
||||
.modal-header {
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
|
||||
small {
|
||||
font-weight: normal;
|
||||
text-transform: none;
|
||||
@extend .text-muted;
|
||||
}
|
||||
}
|
||||
|
||||
.card-header {
|
||||
@include themify($themes) {
|
||||
background-color: themed("headerColor");
|
||||
color: themed("textHeadingColor");
|
||||
}
|
||||
|
||||
a:hover {
|
||||
&:not(.badge) {
|
||||
@include themify($themes) {
|
||||
color: themed("learnMoreHover");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-body-header {
|
||||
font-size: $font-size-lg;
|
||||
@extend .mb-4;
|
||||
}
|
||||
|
||||
.card ul.bwi-ul.card-ul {
|
||||
margin-left: 1.9em;
|
||||
|
||||
li {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.bwi-li {
|
||||
top: 4px;
|
||||
}
|
||||
|
||||
&.carets {
|
||||
margin-left: 1.1em;
|
||||
|
||||
.bwi-li {
|
||||
left: -17px;
|
||||
width: 1.1em;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
&.carets {
|
||||
margin-left: 0.85em;
|
||||
}
|
||||
}
|
||||
|
||||
&.no-margin {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.card-org-plans {
|
||||
h2 {
|
||||
font-size: $font-size-lg;
|
||||
}
|
||||
}
|
||||
|
||||
.card-body {
|
||||
&:not(.bg-light > .card-body) {
|
||||
@include themify($themes) {
|
||||
background-color: themed("foregroundColor");
|
||||
color: themed("textColor");
|
||||
}
|
||||
&.card-body a:not(li a) {
|
||||
@include themify($themes) {
|
||||
font-weight: themed("linkWeight");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
8
apps/web/src/scss/export.module.scss
Normal file
8
apps/web/src/scss/export.module.scss
Normal file
@@ -0,0 +1,8 @@
|
||||
@import "variables";
|
||||
|
||||
:export {
|
||||
darkInputColor: $darkInputColor;
|
||||
darkInputPlaceholderColor: $darkInputPlaceholderColor;
|
||||
lightInputColor: $lightInputColor;
|
||||
lightInputPlaceholderColor: $lightInputPlaceholderColor;
|
||||
}
|
||||
9
apps/web/src/scss/export.module.scss.d.ts
vendored
Normal file
9
apps/web/src/scss/export.module.scss.d.ts
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
export interface ThemeVariableExport {
|
||||
lightInputColor: string;
|
||||
lightInputPlaceholderColor: string;
|
||||
darkInputColor: string;
|
||||
darkInputPlaceholderColor: string;
|
||||
}
|
||||
|
||||
export const ThemeVariables: ThemeVariableExport;
|
||||
export default ThemeVariables;
|
||||
256
apps/web/src/scss/forms.scss
Normal file
256
apps/web/src/scss/forms.scss
Normal file
@@ -0,0 +1,256 @@
|
||||
::-ms-reveal {
|
||||
display: none;
|
||||
}
|
||||
|
||||
::placeholder {
|
||||
@include themify($themes) {
|
||||
color: themed("inputPlaceholderColor");
|
||||
}
|
||||
}
|
||||
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
&:required {
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="search"]::-webkit-search-cancel-button {
|
||||
-webkit-appearance: -cancel-button;
|
||||
}
|
||||
|
||||
label:not(.form-check-label):not(.btn),
|
||||
label.bold {
|
||||
font-weight: 600;
|
||||
@include themify($themes) {
|
||||
color: themed("textHeadingColor");
|
||||
}
|
||||
}
|
||||
|
||||
label.form-check-label,
|
||||
.form-control-file {
|
||||
@include themify($themes) {
|
||||
color: themed("textHeadingColor");
|
||||
}
|
||||
}
|
||||
|
||||
.form-check-block {
|
||||
.form-check-label {
|
||||
font-weight: 600;
|
||||
|
||||
> small {
|
||||
display: block;
|
||||
font-weight: normal;
|
||||
@include themify($themes) {
|
||||
color: themed("textMuted");
|
||||
}
|
||||
}
|
||||
|
||||
> span {
|
||||
display: block;
|
||||
font-weight: normal;
|
||||
@extend .mt-2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.form-check-block + .form-check-block {
|
||||
&:not(.mt-2) {
|
||||
@extend .mt-3;
|
||||
}
|
||||
}
|
||||
|
||||
.form-group {
|
||||
.form-group-child-check {
|
||||
@extend .ml-4;
|
||||
}
|
||||
}
|
||||
|
||||
.form-inline {
|
||||
input[type="datetime-local"] {
|
||||
width: 200px;
|
||||
}
|
||||
}
|
||||
|
||||
.form-control {
|
||||
@include themify($themes) {
|
||||
background-color: themed("inputBackgroundColor");
|
||||
border-color: themed("inputBorderColor");
|
||||
color: themed("inputTextColor");
|
||||
|
||||
option {
|
||||
background-color: themed("backgroundColor");
|
||||
}
|
||||
}
|
||||
|
||||
&:disabled,
|
||||
&[readonly] {
|
||||
@include themify($themes) {
|
||||
background-color: themed("inputDisabledBackground");
|
||||
color: themed("inputDisabledColor");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.form-control.stripe-form-control {
|
||||
padding-top: 0.55rem;
|
||||
|
||||
&.is-focused {
|
||||
outline: 0;
|
||||
@include themify($themes) {
|
||||
background-color: themed("inputBackgroundColor");
|
||||
border-color: themed("inputBorderColor");
|
||||
box-shadow: 0 0 0 $input-focus-width
|
||||
rgba(mix(color-yiq(themed("primary")), themed("primary"), 15%), 0.5);
|
||||
color: themed("inputTextColor");
|
||||
}
|
||||
|
||||
&.is-invalid {
|
||||
opacity: 0.75;
|
||||
@include themify($themes) {
|
||||
box-shadow: 0 0 0 $input-focus-width themed("danger");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.is-invalid {
|
||||
@include themify($themes) {
|
||||
border-color: themed("danger");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu,
|
||||
.dropdown-item {
|
||||
@include themify($themes) {
|
||||
background-color: themed("dropdownBackground");
|
||||
color: themed("dropdownTextColor");
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-item {
|
||||
@include themify($themes) {
|
||||
color: themed("dropdownTextColor");
|
||||
}
|
||||
|
||||
&.text-danger {
|
||||
@include themify($themes) {
|
||||
color: themed("danger") !important;
|
||||
}
|
||||
}
|
||||
&:hover {
|
||||
@include themify($themes) {
|
||||
background-color: themed("dropdownHover");
|
||||
}
|
||||
}
|
||||
&:active {
|
||||
background-color: rgba(0, 0, 0, 0.1) !important;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
button {
|
||||
cursor: pointer;
|
||||
}
|
||||
@include themify($themes) {
|
||||
border: 1px solid themed("listItemBorder");
|
||||
}
|
||||
}
|
||||
|
||||
.list-group-item {
|
||||
&:focus,
|
||||
&.focus {
|
||||
z-index: 100;
|
||||
}
|
||||
@include themify($themes) {
|
||||
background-color: themed("foregroundColor");
|
||||
border-color: themed("listItemBorder");
|
||||
color: themed("textColor");
|
||||
}
|
||||
> .two-factor-content {
|
||||
justify-content: center;
|
||||
flex-direction: row;
|
||||
display: flex;
|
||||
> .text-col {
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
}
|
||||
> .logo-col {
|
||||
min-width: 100px;
|
||||
margin-right: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
img {
|
||||
height: fit-content;
|
||||
}
|
||||
}
|
||||
> .btn-col {
|
||||
width: 85px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.list-group-item.active {
|
||||
font-weight: bold !important;
|
||||
padding-left: calc(#{$list-group-item-padding-x} - 3px);
|
||||
@include themify($themes) {
|
||||
border-color: themed("borderColor");
|
||||
border-left: 3px solid themed("borderPrimaryColor");
|
||||
color: themed("listItemActive");
|
||||
}
|
||||
}
|
||||
|
||||
.section-header {
|
||||
h3,
|
||||
.btn.btn-link {
|
||||
@include themify($themes) {
|
||||
color: themed("headingColor");
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-weight: normal;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
|
||||
.error-summary {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.error-inline {
|
||||
@include themify($themes) {
|
||||
color: themed("danger");
|
||||
}
|
||||
}
|
||||
|
||||
// Theming for invalid form elements in the SSO Config Form only
|
||||
// Will be deprecated by component-level styling in the Component Library
|
||||
app-org-manage-sso form {
|
||||
.form-control.ng-invalid,
|
||||
app-input-text.ng-invalid .form-control,
|
||||
app-select.ng-invalid .form-control {
|
||||
@include themify($themes) {
|
||||
border-color: themed("danger");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Browser specific icons overlayed on input fields. e.g. caps lock indicator on password field
|
||||
::-webkit-calendar-picker-indicator,
|
||||
input::-webkit-caps-lock-indicator,
|
||||
input::-webkit-credentials-auto-fill-button {
|
||||
@include themify($themes) {
|
||||
filter: themed("browserInputIconsFilter");
|
||||
}
|
||||
}
|
||||
162
apps/web/src/scss/modals.scss
Normal file
162
apps/web/src/scss/modals.scss
Normal file
@@ -0,0 +1,162 @@
|
||||
.modal-content {
|
||||
border: none;
|
||||
border-radius: none;
|
||||
@include themify($themes) {
|
||||
background-color: themed("backgroundColor");
|
||||
}
|
||||
}
|
||||
|
||||
.modal-dialog {
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
border-radius: 0.3rem;
|
||||
width: $modal-md;
|
||||
}
|
||||
|
||||
.modal-sm {
|
||||
width: $modal-sm;
|
||||
}
|
||||
|
||||
.modal-lg {
|
||||
width: $modal-lg;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
@include themify($themes) {
|
||||
background-color: themed("foregroundColor");
|
||||
border-bottom: 1px solid themed("separator");
|
||||
color: themed("textColor");
|
||||
}
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
@include themify($themes) {
|
||||
background-color: themed("foregroundColor");
|
||||
color: themed("textColor");
|
||||
}
|
||||
|
||||
h3,
|
||||
.section-header > * {
|
||||
font-weight: normal;
|
||||
text-transform: uppercase;
|
||||
@include themify($themes) {
|
||||
color: themed("textMuted");
|
||||
}
|
||||
}
|
||||
}
|
||||
.modal .list-group-flush {
|
||||
:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
.modal .list-group-flush-2fa {
|
||||
div {
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
}
|
||||
div:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
justify-content: flex-start;
|
||||
@include themify($themes) {
|
||||
background-color: themed("footerBackgroundColor");
|
||||
border-top: 1px solid themed("separator");
|
||||
}
|
||||
}
|
||||
|
||||
.close {
|
||||
@include themify($themes) {
|
||||
color: themed("textColor");
|
||||
}
|
||||
}
|
||||
|
||||
#totpImage {
|
||||
@include themify($themes) {
|
||||
filter: themed("imgFilter");
|
||||
}
|
||||
}
|
||||
|
||||
.totp {
|
||||
.totp-code {
|
||||
@extend .text-monospace;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.totp-countdown {
|
||||
display: block;
|
||||
margin: 3px 3px 0 0;
|
||||
user-select: none;
|
||||
|
||||
.totp-sec {
|
||||
font-size: 0.85em;
|
||||
line-height: 32px;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: 32px;
|
||||
}
|
||||
|
||||
svg {
|
||||
height: 32px;
|
||||
transform: rotate(-90deg);
|
||||
width: 32px;
|
||||
}
|
||||
|
||||
.totp-circle {
|
||||
fill: none;
|
||||
@include themify($themes) {
|
||||
stroke: themed("primary");
|
||||
}
|
||||
|
||||
&.inner {
|
||||
stroke-dasharray: 78.6;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-width: 3;
|
||||
}
|
||||
|
||||
&.outer {
|
||||
stroke-dasharray: 88;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-width: 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> .align-items-center {
|
||||
margin-bottom: -5px;
|
||||
}
|
||||
|
||||
&.low {
|
||||
.totp-sec,
|
||||
.totp-code {
|
||||
@include themify($themes) {
|
||||
color: themed("danger");
|
||||
}
|
||||
}
|
||||
|
||||
.totp-circle {
|
||||
@include themify($themes) {
|
||||
stroke: themed("danger");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cdk-drag-preview {
|
||||
border-radius: $border-radius;
|
||||
opacity: 0.8;
|
||||
z-index: $zindex-tooltip !important;
|
||||
@include themify($themes) {
|
||||
background: themed("cdkDraggingBackground");
|
||||
}
|
||||
}
|
||||
104
apps/web/src/scss/navigation.scss
Normal file
104
apps/web/src/scss/navigation.scss
Normal file
@@ -0,0 +1,104 @@
|
||||
.navbar {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
@include themify($themes) {
|
||||
background-color: themed("navBackground");
|
||||
}
|
||||
|
||||
&.nav-background-alt {
|
||||
@include themify($themes) {
|
||||
background-color: themed("navBackgroundAlt");
|
||||
}
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
> .nav-link {
|
||||
@include themify($themes) {
|
||||
font-weight: themed("navWeight");
|
||||
}
|
||||
}
|
||||
&.active > .nav-link {
|
||||
@include themify($themes) {
|
||||
font-weight: themed("navActiveWeight");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
margin-bottom: -20px;
|
||||
margin-top: -20px;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-link.active {
|
||||
@include themify($themes) {
|
||||
background: themed("navActiveBackground");
|
||||
border-color: themed("borderColor");
|
||||
}
|
||||
}
|
||||
|
||||
.org-nav {
|
||||
height: 100px;
|
||||
min-height: 100px;
|
||||
@include themify($themes) {
|
||||
background-color: themed("navOrgBackgroundColor");
|
||||
border-bottom: 1px solid themed("borderColor");
|
||||
color: themed("textColor");
|
||||
}
|
||||
|
||||
.container {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.org-name {
|
||||
line-height: 1;
|
||||
text-align: left;
|
||||
font-weight: normal;
|
||||
span {
|
||||
display: block;
|
||||
font-size: $font-size-lg;
|
||||
@include themify($themes) {
|
||||
color: themed("textHeadingColor");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tabbed-nav {
|
||||
@include themify($themes) {
|
||||
border-bottom: 1px solid themed("borderColor");
|
||||
color: themed("textColor");
|
||||
}
|
||||
}
|
||||
|
||||
.org-nav,
|
||||
.tabbed-nav {
|
||||
.nav-tabs {
|
||||
border-bottom: none;
|
||||
|
||||
a {
|
||||
&:not(.active) {
|
||||
border-color: transparent;
|
||||
@include themify($themes) {
|
||||
color: themed("textColor");
|
||||
}
|
||||
}
|
||||
|
||||
&.active {
|
||||
font-weight: bold;
|
||||
padding-top: calc(#{$nav-link-padding-y} - 2px);
|
||||
@include themify($themes) {
|
||||
border-top: 3px solid themed("primary");
|
||||
border-bottom: 1px solid themed("backgroundColor");
|
||||
color: themed("linkColor");
|
||||
}
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
@include themify($themes) {
|
||||
color: themed("inputDisabledColor");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
230
apps/web/src/scss/pages.scss
Normal file
230
apps/web/src/scss/pages.scss
Normal file
@@ -0,0 +1,230 @@
|
||||
.generated-wrapper {
|
||||
min-width: 0;
|
||||
white-space: pre-wrap;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.password-row {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.password-letter {
|
||||
@include themify($themes) {
|
||||
color: themed("pwLetter");
|
||||
}
|
||||
}
|
||||
|
||||
.password-number {
|
||||
@include themify($themes) {
|
||||
color: themed("pwNumber");
|
||||
}
|
||||
}
|
||||
|
||||
.password-special {
|
||||
@include themify($themes) {
|
||||
color: themed("pwSpecial");
|
||||
}
|
||||
}
|
||||
|
||||
app-generator {
|
||||
#lengthRange {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.card-generated {
|
||||
.card-body {
|
||||
@include themify($themes) {
|
||||
background: themed("foregroundColor");
|
||||
}
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
font-family: $font-family-monospace;
|
||||
font-size: $font-size-lg;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
app-password-generator-history {
|
||||
.list-group-item {
|
||||
line-height: 1;
|
||||
@include themify($themes) {
|
||||
background: themed("backgroundColor");
|
||||
}
|
||||
|
||||
.password {
|
||||
font-family: $font-family-monospace;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
app-import {
|
||||
textarea {
|
||||
height: 150px;
|
||||
}
|
||||
}
|
||||
|
||||
app-avatar {
|
||||
img {
|
||||
@extend .rounded;
|
||||
}
|
||||
}
|
||||
|
||||
app-user-billing {
|
||||
.progress {
|
||||
height: 20px;
|
||||
|
||||
.progress-bar {
|
||||
min-width: 50px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
app-sponsored-families {
|
||||
.inset-list {
|
||||
padding-left: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Register Layout Page */
|
||||
.layout {
|
||||
&.default,
|
||||
&.teams,
|
||||
&.teams1,
|
||||
&.teams2,
|
||||
&.enterprise,
|
||||
&.enterprise1,
|
||||
&.enterprise2,
|
||||
&.cnetcmpgnent,
|
||||
&.cnetcmpgnteams,
|
||||
&.cnetcmpgnind {
|
||||
header {
|
||||
background: #175ddc;
|
||||
color: #ced4da;
|
||||
height: 70px;
|
||||
|
||||
&:before {
|
||||
background: #175ddc;
|
||||
content: "";
|
||||
height: 520px;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: -80px;
|
||||
transform: skewY(-3deg);
|
||||
width: 100%;
|
||||
z-index: -1;
|
||||
}
|
||||
img.logo {
|
||||
height: 57px;
|
||||
margin: 12px 0 0;
|
||||
max-width: 284px;
|
||||
width: 284px;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #ffffff;
|
||||
font-size: 3.5rem;
|
||||
margin: 50px 0 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #ffffff;
|
||||
font-size: 2rem;
|
||||
line-height: 1.5;
|
||||
margin: 20px 0 140px;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 2rem;
|
||||
margin: 10px 0 70px 0;
|
||||
|
||||
&:before {
|
||||
content: "/";
|
||||
padding-right: 12px;
|
||||
}
|
||||
&:not(.highlight) {
|
||||
&:before {
|
||||
color: #1252a3;
|
||||
}
|
||||
}
|
||||
|
||||
b {
|
||||
&:after {
|
||||
content: "⟶";
|
||||
font-size: 2rem;
|
||||
padding-left: 6px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
font-size: 1.4rem;
|
||||
margin: 20px 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.cnetcmpgnind {
|
||||
p {
|
||||
font-size: 1.5rem;
|
||||
margin: 10px 0 50px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.collapsable-row {
|
||||
display: flex;
|
||||
padding-top: 15px;
|
||||
i {
|
||||
margin-top: 3px;
|
||||
}
|
||||
.filter-title {
|
||||
padding-left: 5px;
|
||||
}
|
||||
&.active {
|
||||
@include themify($themes) {
|
||||
color: themed("primary");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.vault-filter-option {
|
||||
padding-bottom: 3px;
|
||||
&.active {
|
||||
@include themify($themes) {
|
||||
color: themed("primary");
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
button.org-options {
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
@include themify($themes) {
|
||||
color: themed("iconHover") !important;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.org-filter-heading {
|
||||
@include themify($themes) {
|
||||
color: themed("textColor");
|
||||
}
|
||||
&.active {
|
||||
@include themify($themes) {
|
||||
color: themed("primary");
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
227
apps/web/src/scss/plugins.scss
Normal file
227
apps/web/src/scss/plugins.scss
Normal file
@@ -0,0 +1,227 @@
|
||||
#duo-frame {
|
||||
height: 330px;
|
||||
@include themify($themes) {
|
||||
background: themed("imgLoading") 0 0 no-repeat;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: none;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#web-authn-frame {
|
||||
height: 290px;
|
||||
@include themify($themes) {
|
||||
background: themed("imgLoading") 0 0 no-repeat;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: none;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#hcaptcha_iframe {
|
||||
border: none;
|
||||
transition: height 0.25s linear;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.list-group-2fa {
|
||||
.logo-2fa {
|
||||
min-width: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
@each $mfaType in $mfaTypes {
|
||||
.mfaType#{$mfaType} {
|
||||
content: url("../images/two-factor/" + $mfaType + ".png");
|
||||
max-width: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
.mfaType1 {
|
||||
@include themify($themes) {
|
||||
content: url("../images/two-factor/1" + themed("mfaLogoSuffix"));
|
||||
max-width: 100px;
|
||||
max-height: 45px;
|
||||
}
|
||||
}
|
||||
|
||||
.mfaType7 {
|
||||
@include themify($themes) {
|
||||
content: url("../images/two-factor/7" + themed("mfaLogoSuffix"));
|
||||
max-width: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
.recovery-code-img {
|
||||
@include themify($themes) {
|
||||
content: url("../images/two-factor/rc" + themed("mfaLogoSuffix"));
|
||||
max-width: 100px;
|
||||
max-height: 45px;
|
||||
}
|
||||
}
|
||||
|
||||
.progress {
|
||||
@include themify($themes) {
|
||||
background-color: themed("pwStrengthBackground");
|
||||
}
|
||||
}
|
||||
|
||||
// Braintree
|
||||
|
||||
#bt-dropin-container {
|
||||
min-height: 50px;
|
||||
@include themify($themes) {
|
||||
background: themed("loadingSvg") center center no-repeat;
|
||||
}
|
||||
}
|
||||
|
||||
.braintree-placeholder,
|
||||
.braintree-sheet__header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.braintree-sheet__content--button {
|
||||
min-height: 0;
|
||||
padding: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.braintree-sheet__container {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.braintree-sheet {
|
||||
border: none;
|
||||
}
|
||||
|
||||
[data-braintree-id="upper-container"]::before {
|
||||
@include themify($themes) {
|
||||
background-color: themed("backgroundColor");
|
||||
}
|
||||
}
|
||||
|
||||
.card [data-braintree-id="upper-container"]::before {
|
||||
@include themify($themes) {
|
||||
background-color: themed("foregroundColor");
|
||||
}
|
||||
}
|
||||
|
||||
[data-braintree-id="paypal-button"] {
|
||||
@include themify($themes) {
|
||||
background-color: themed("backgroundColor");
|
||||
}
|
||||
}
|
||||
|
||||
.card [data-braintree-id="paypal-button"] {
|
||||
@include themify($themes) {
|
||||
background-color: themed("foregroundColor");
|
||||
}
|
||||
}
|
||||
|
||||
.paypal-button-text {
|
||||
@include themify($themes) {
|
||||
color: themed("textColor");
|
||||
}
|
||||
}
|
||||
|
||||
// SweetAlert2
|
||||
|
||||
[class*="swal2-"] {
|
||||
&:not(.swal2-container, .swal2-confirm, .swal2-cancel, .swal2-deny) {
|
||||
@include themify($themes) {
|
||||
background-color: themed("backgroundColor");
|
||||
color: themed("textColor");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.swal2-container {
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.swal2-popup {
|
||||
@include themify($themes) {
|
||||
background-color: themed("backgroundColor");
|
||||
color: themed("textColor");
|
||||
}
|
||||
border: $modal-content-border-width solid #9a9a9a;
|
||||
@include border-radius($modal-content-border-radius);
|
||||
padding: 15px 0 0;
|
||||
width: 34em; // slightly bigger than the hardcoded 478px in v1.
|
||||
|
||||
.swal2-header {
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
.swal2-icon {
|
||||
border: none;
|
||||
height: auto;
|
||||
margin: 0 auto;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.swal2-content {
|
||||
font-size: $font-size-base;
|
||||
padding-bottom: 15px;
|
||||
@include themify($themes) {
|
||||
border-bottom: $modal-footer-border-width solid themed("separator");
|
||||
}
|
||||
}
|
||||
|
||||
i.swal-custom-icon {
|
||||
display: block;
|
||||
font-size: 35px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.swal2-title {
|
||||
font-size: $font-size-lg;
|
||||
margin: 0;
|
||||
padding: 10px 0 15px;
|
||||
@include themify($themes) {
|
||||
color: themed("textHeadingColor");
|
||||
}
|
||||
}
|
||||
|
||||
.swal2-content {
|
||||
font-size: $font-size-base;
|
||||
padding: 0 15px 15px;
|
||||
@include themify($themes) {
|
||||
color: themed("textColor");
|
||||
}
|
||||
}
|
||||
|
||||
.swal2-actions {
|
||||
@include border-radius($modal-content-border-radius);
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: $font-size-base;
|
||||
justify-content: flex-start;
|
||||
margin: 0;
|
||||
padding: 15px;
|
||||
@include themify($themes) {
|
||||
background-color: themed("backgroundColor");
|
||||
}
|
||||
|
||||
button {
|
||||
margin-right: 10px;
|
||||
@extend .btn;
|
||||
}
|
||||
}
|
||||
|
||||
.swal2-validation-message {
|
||||
margin: 0 -15px;
|
||||
}
|
||||
}
|
||||
|
||||
date-input-polyfill {
|
||||
&[data-open="true"] {
|
||||
z-index: 10000 !important;
|
||||
}
|
||||
}
|
||||
60
apps/web/src/scss/styles.scss
Normal file
60
apps/web/src/scss/styles.scss
Normal file
@@ -0,0 +1,60 @@
|
||||
@import "../../jslib/angular/src/scss/webfonts.css";
|
||||
@import "./variables";
|
||||
@import "../../jslib/angular/src/scss/bwicons/styles/style.scss";
|
||||
@import "../../jslib/angular/src/scss/icons.scss";
|
||||
@import "@angular/cdk/overlay-prebuilt.css";
|
||||
|
||||
//@import "~bootstrap/scss/bootstrap";
|
||||
@import "~bootstrap/scss/_functions";
|
||||
@import "~bootstrap/scss/_variables";
|
||||
@import "~bootstrap/scss/_mixins";
|
||||
@import "~bootstrap/scss/_root";
|
||||
@import "~bootstrap/scss/_reboot";
|
||||
@import "~bootstrap/scss/_type";
|
||||
@import "~bootstrap/scss/_images";
|
||||
@import "~bootstrap/scss/_code";
|
||||
@import "~bootstrap/scss/_grid";
|
||||
@import "~bootstrap/scss/_tables";
|
||||
@import "~bootstrap/scss/_forms";
|
||||
@import "~bootstrap/scss/_buttons";
|
||||
@import "~bootstrap/scss/_transitions";
|
||||
@import "~bootstrap/scss/_dropdown";
|
||||
@import "~bootstrap/scss/_button-group";
|
||||
@import "~bootstrap/scss/_input-group";
|
||||
@import "~bootstrap/scss/_custom-forms";
|
||||
@import "~bootstrap/scss/_nav";
|
||||
@import "~bootstrap/scss/_navbar";
|
||||
@import "~bootstrap/scss/_card";
|
||||
@import "~bootstrap/scss/_breadcrumb";
|
||||
@import "~bootstrap/scss/_pagination";
|
||||
@import "~bootstrap/scss/_badge";
|
||||
@import "~bootstrap/scss/_jumbotron";
|
||||
@import "~bootstrap/scss/_alert";
|
||||
@import "~bootstrap/scss/_progress";
|
||||
@import "~bootstrap/scss/_media";
|
||||
@import "~bootstrap/scss/_list-group";
|
||||
@import "~bootstrap/scss/_close";
|
||||
//@import "~bootstrap/scss/_toasts";
|
||||
@import "~bootstrap/scss/_modal";
|
||||
@import "~bootstrap/scss/_tooltip";
|
||||
@import "~bootstrap/scss/_popover";
|
||||
@import "~bootstrap/scss/_carousel";
|
||||
@import "~bootstrap/scss/_spinners";
|
||||
@import "~bootstrap/scss/_utilities";
|
||||
@import "~bootstrap/scss/_print";
|
||||
|
||||
@import "~ngx-toastr/toastr";
|
||||
@import "~#sweetalert2";
|
||||
|
||||
@import "./base";
|
||||
@import "./buttons";
|
||||
@import "./callouts";
|
||||
@import "./cards";
|
||||
@import "./forms";
|
||||
@import "./navigation";
|
||||
@import "./modals";
|
||||
@import "./pages";
|
||||
@import "./plugins";
|
||||
@import "./tables";
|
||||
@import "./toasts";
|
||||
@import "./vault-filters";
|
||||
137
apps/web/src/scss/tables.scss
Normal file
137
apps/web/src/scss/tables.scss
Normal file
@@ -0,0 +1,137 @@
|
||||
.table {
|
||||
@include themify($themes) {
|
||||
color: themed("textColor");
|
||||
}
|
||||
|
||||
td {
|
||||
vertical-align: middle;
|
||||
@include themify($themes) {
|
||||
color: themed("textColor");
|
||||
}
|
||||
|
||||
& > a {
|
||||
&:not(.badge) {
|
||||
@include themify($themes) {
|
||||
color: themed("tableLinkColor");
|
||||
}
|
||||
&:hover {
|
||||
@include themify($themes) {
|
||||
color: themed("tableLinkColorHover");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.reduced-lh {
|
||||
line-height: 1;
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
}
|
||||
|
||||
small,
|
||||
> .bwi,
|
||||
.icon {
|
||||
@include themify($themes) {
|
||||
color: themed("textMuted");
|
||||
}
|
||||
}
|
||||
|
||||
.bwi-globe {
|
||||
@include themify($themes) {
|
||||
color: themed("iconColor");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
td.wrap {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
td.table-list-options {
|
||||
height: 50px;
|
||||
max-width: 76px;
|
||||
text-align: right;
|
||||
width: 76px;
|
||||
|
||||
&.wider {
|
||||
max-width: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
line-height: 1;
|
||||
transition: initial;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
line-height: $line-height-base;
|
||||
}
|
||||
}
|
||||
|
||||
td.table-action-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
// Deprecated: only used for old Bootstrap table-list-option menus before the End User Vault Refresh.
|
||||
// New menus should be permanently visible.
|
||||
tr:not(:hover) td.table-list-options {
|
||||
> .dropdown:not(.show) button:not(:focus):not(:active),
|
||||
> button.dropdown-toggle:not(:focus):not(:active) {
|
||||
@extend .sr-only;
|
||||
}
|
||||
}
|
||||
|
||||
td.table-list-icon {
|
||||
max-width: 45px;
|
||||
text-align: center;
|
||||
width: 45px;
|
||||
|
||||
img {
|
||||
@extend .rounded;
|
||||
@extend .img-fluid;
|
||||
max-height: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
td.table-list-checkbox {
|
||||
max-width: 35px;
|
||||
width: 35px;
|
||||
}
|
||||
|
||||
td.table-list-strike {
|
||||
text-decoration: line-through;
|
||||
@include themify($themes) {
|
||||
color: themed("textMuted");
|
||||
}
|
||||
}
|
||||
|
||||
&.table-list {
|
||||
&.table td,
|
||||
.table th {
|
||||
&:not(tr:first-child td) {
|
||||
@include themify($themes) {
|
||||
border-top: 1px solid themed("tableSeparator");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
thead th {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
tr:first-child {
|
||||
td {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table-hover tbody tr:hover {
|
||||
@include themify($themes) {
|
||||
background-color: themed("tableRowHover");
|
||||
color: themed("tableColorHover");
|
||||
}
|
||||
}
|
||||
5
apps/web/src/scss/tailwind.css
Normal file
5
apps/web/src/scss/tailwind.css
Normal file
@@ -0,0 +1,5 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@import "../../jslib/components/src/tw-theme.css";
|
||||
117
apps/web/src/scss/toasts.scss
Normal file
117
apps/web/src/scss/toasts.scss
Normal file
@@ -0,0 +1,117 @@
|
||||
.toast-container {
|
||||
.toast-close-button {
|
||||
font-size: 18px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.ngx-toastr {
|
||||
align-items: center;
|
||||
background-image: none !important;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: 0 0 8px rgba(0, 0, 0, 0.35);
|
||||
display: flex;
|
||||
padding: 15px;
|
||||
|
||||
.toast-close-button {
|
||||
position: absolute;
|
||||
right: 5px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
|
||||
.icon i::before {
|
||||
float: left;
|
||||
font-style: normal;
|
||||
font-family: $icomoon-font-family;
|
||||
font-size: 25px;
|
||||
line-height: 20px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
.toast-message {
|
||||
p {
|
||||
margin-bottom: 0.5rem;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.toast-danger,
|
||||
&.toast-error {
|
||||
@include themify($themes) {
|
||||
background-color: themed("danger");
|
||||
}
|
||||
|
||||
&,
|
||||
&:before,
|
||||
& .toast-close-button {
|
||||
@include themify($themes) {
|
||||
color: themed("textDangerColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.icon i::before {
|
||||
content: map_get($icons, "error");
|
||||
}
|
||||
}
|
||||
|
||||
&.toast-warning {
|
||||
@include themify($themes) {
|
||||
background-color: themed("warning");
|
||||
}
|
||||
|
||||
&,
|
||||
&:before,
|
||||
& .toast-close-button {
|
||||
@include themify($themes) {
|
||||
color: themed("textWarningColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.icon i::before {
|
||||
content: map_get($icons, "exclamation-triangle");
|
||||
}
|
||||
}
|
||||
|
||||
&.toast-info {
|
||||
@include themify($themes) {
|
||||
background-color: themed("info");
|
||||
}
|
||||
|
||||
&,
|
||||
&:before,
|
||||
& .toast-close-button {
|
||||
@include themify($themes) {
|
||||
color: themed("textInfoColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.icon i:before {
|
||||
content: map_get($icons, "info-circle");
|
||||
}
|
||||
}
|
||||
|
||||
&.toast-success {
|
||||
@include themify($themes) {
|
||||
background-color: themed("success");
|
||||
}
|
||||
|
||||
&,
|
||||
&:before,
|
||||
& .toast-close-button {
|
||||
@include themify($themes) {
|
||||
color: themed("textSuccessColor") !important;
|
||||
}
|
||||
}
|
||||
|
||||
.icon i:before {
|
||||
content: map_get($icons, "check");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
357
apps/web/src/scss/variables.scss
Normal file
357
apps/web/src/scss/variables.scss
Normal file
@@ -0,0 +1,357 @@
|
||||
$dark-icon-themes: "theme_dark";
|
||||
|
||||
$primary: #175ddc;
|
||||
$primary-accent: #1252a3;
|
||||
$secondary: #ced4da;
|
||||
$secondary-alt: #1a3b66;
|
||||
$success: #00a65a;
|
||||
$info: #555555;
|
||||
$warning: #bf7e16;
|
||||
$danger: #dd4b39;
|
||||
$white: #ffffff;
|
||||
|
||||
// Bootstrap Variable Overrides
|
||||
|
||||
$theme-colors: (
|
||||
"primary-accent": $primary-accent,
|
||||
"secondary-alt": $secondary-alt,
|
||||
);
|
||||
|
||||
$body-bg: $white;
|
||||
$body-color: #333333;
|
||||
|
||||
$font-family-sans-serif: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif,
|
||||
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
|
||||
$h1-font-size: 1.7rem;
|
||||
$h2-font-size: 1.3rem;
|
||||
$h3-font-size: 1rem;
|
||||
$h4-font-size: 1rem;
|
||||
$h5-font-size: 1rem;
|
||||
$h6-font-size: 1rem;
|
||||
|
||||
$small-font-size: 90%;
|
||||
$font-size-lg: 1.15rem;
|
||||
$code-font-size: 100%;
|
||||
|
||||
$navbar-padding-y: 0.75rem;
|
||||
$grid-gutter-width: 20px;
|
||||
$card-spacer-y: 0.6rem;
|
||||
|
||||
$list-group-item-padding-y: 0.6rem;
|
||||
$list-group-active-color: $body-color;
|
||||
$list-group-active-bg: $white;
|
||||
$list-group-active-border-color: rgba(#000000, 0.125);
|
||||
|
||||
$dropdown-link-color: $body-color;
|
||||
$dropdown-link-hover-bg: rgba(#000000, 0.06);
|
||||
$dropdown-link-active-color: $dropdown-link-color;
|
||||
$dropdown-link-active-bg: rgba(#000000, 0.1);
|
||||
$dropdown-item-padding-x: 1rem;
|
||||
|
||||
$navbar-brand-font-size: 35px;
|
||||
$navbar-brand-height: 35px;
|
||||
$navbar-brand-padding-y: 0;
|
||||
$navbar-dark-color: rgba($white, 0.7);
|
||||
$navbar-dark-hover-color: rgba($white, 0.9);
|
||||
$navbar-nav-link-padding-x: 0.8rem;
|
||||
|
||||
$input-bg: #fbfbfb;
|
||||
$input-focus-bg: $white;
|
||||
$input-disabled-bg: #e0e0e0;
|
||||
$input-placeholder-color: #b4b4b4;
|
||||
|
||||
$table-accent-bg: rgba(#000000, 0.02);
|
||||
$table-hover-bg: rgba(#000000, 0.03);
|
||||
|
||||
$modal-backdrop-opacity: 0.3;
|
||||
$btn-font-weight: 600;
|
||||
$lead-font-weight: normal;
|
||||
|
||||
$grid-breakpoints: (
|
||||
xs: 0,
|
||||
sm: 1px,
|
||||
md: 2px,
|
||||
lg: 3px,
|
||||
xl: 4px,
|
||||
);
|
||||
|
||||
$border-color: $secondary;
|
||||
|
||||
// MFA Types for logo styling with no dark theme alternative
|
||||
|
||||
$mfaTypes: 0, 2, 3, 4, 6;
|
||||
|
||||
// Theme Variables
|
||||
// Light
|
||||
|
||||
$lightDangerHover: #c43421;
|
||||
$lightInputColor: #465057;
|
||||
$lightInputPlaceholderColor: #b6b8b8;
|
||||
|
||||
// Dark
|
||||
|
||||
$darkPrimary: #6a99f0;
|
||||
$darkPrimary-alt: #b4ccf9;
|
||||
$darkDanger: #ff8d85;
|
||||
$darkDangerHover: #ffbfbb;
|
||||
$darkSuccess: #52e07c;
|
||||
$darkWarning: #ffeb66;
|
||||
$darkInfo: #a4b0c6;
|
||||
$darkLinks: #6a99f0;
|
||||
$darkGrey1: #bac0ce;
|
||||
$darkGrey2: #8d94a5;
|
||||
$darkBlue1: #4c525f;
|
||||
$darkBlue2: #3c424e;
|
||||
$darkDarkBlue1: #2f343d;
|
||||
$darkDarkBlue2: #1f242e;
|
||||
$darkInputColor: $white;
|
||||
$darkInputPlaceholderColor: $darkGrey1;
|
||||
|
||||
$themes: (
|
||||
light: (
|
||||
primary: $primary,
|
||||
primaryAlt: $primary-accent,
|
||||
danger: $danger,
|
||||
info: #343a40,
|
||||
success: $success,
|
||||
warning: $warning,
|
||||
backgroundColor: $white,
|
||||
badgeDangerBackground: $danger,
|
||||
badgeDangerText: $white,
|
||||
badgeInfoBackground: #555555,
|
||||
badgeInfoText: $white,
|
||||
badgePrimaryBackground: $primary,
|
||||
badgePrimaryBackgroundHover: #134eb9,
|
||||
badgePrimaryText: $white,
|
||||
badgeSecondaryBackground: #ced4da,
|
||||
badgeSecondaryText: #212529,
|
||||
bgLightColor: #f8f9fa,
|
||||
bgPrimaryColor: $primary,
|
||||
borderColor: $border-color,
|
||||
borderPrimaryColor: $primary,
|
||||
browserInputIconsFilter: invert(0),
|
||||
btnDanger: $danger,
|
||||
btnDangerHover: $lightDangerHover,
|
||||
btnDangerText: $white,
|
||||
btnLinkText: $primary,
|
||||
btnLinkTextHover: #104097,
|
||||
btnOutlineDangerBackground: $input-bg,
|
||||
btnOutlineDangerBackgroundHover: $danger,
|
||||
btnOutlineDangerBorder: #ced4da,
|
||||
btnOutlineDangerBorderHover: $danger,
|
||||
btnOutlineDangerText: $danger,
|
||||
btnOutlineDangerTextHover: $white,
|
||||
btnOutlinePrimaryBackground: $input-bg,
|
||||
btnOutlinePrimaryBackgroundHover: $primary,
|
||||
btnOutlinePrimaryBorder: #ced4da,
|
||||
btnOutlinePrimaryBorderHover: $primary,
|
||||
btnOutlinePrimaryText: $primary,
|
||||
btnOutlinePrimaryTextHover: $white,
|
||||
btnOutlineSecondaryBackground: $input-bg,
|
||||
btnOutlineSecondaryBackgroundHover: #ced4da,
|
||||
btnOutlineSecondaryBorder: #ced4da,
|
||||
btnOutlineSecondaryBorderHover: #ced4da,
|
||||
btnOutlineSecondaryText: #6c757d,
|
||||
btnOutlineSecondaryTextHover: #333333,
|
||||
btnPrimary: $primary,
|
||||
btnPrimaryBorderHover: #1249ae,
|
||||
btnPrimaryHover: #134eb9,
|
||||
btnPrimaryText: $white,
|
||||
btnSecondary: $secondary,
|
||||
btnSecondaryBorder: $secondary,
|
||||
btnSecondaryBorderHover: #b1bbc4,
|
||||
btnSecondaryHover: #b8c1ca,
|
||||
btnSecondaryText: #212529,
|
||||
btnSecondaryTextHover: #212529,
|
||||
calloutBackground: #fafafa,
|
||||
calloutColor: #212529,
|
||||
cdkDraggingBackground: $white,
|
||||
codeColor: #e83e8c,
|
||||
dropdownBackground: $white,
|
||||
dropdownHover: rgba(0, 0, 0, 0.06),
|
||||
dropdownTextColor: $body-color,
|
||||
dropdownTextMuted: #6c757d,
|
||||
focus: rgb(23 93 220 / 25%),
|
||||
footerBackgroundColor: #fbfbfb,
|
||||
foregroundColor: $white,
|
||||
headerColor: rgba(0, 0, 0, 0.03),
|
||||
iconColor: #777777,
|
||||
iconHover: $body-color,
|
||||
imgFilter: invert(0) grayscale(0),
|
||||
inputBackgroundColor: $input-bg,
|
||||
inputBorderColor: $border-color,
|
||||
inputDisabledBackground: #e0e0e0,
|
||||
inputDisabledColor: #6c757d,
|
||||
inputPlaceholderColor: $lightInputPlaceholderColor,
|
||||
inputTextColor: $lightInputColor,
|
||||
layoutFrontendColor: #ecf0f5,
|
||||
learnMoreHover: #104097,
|
||||
linkColor: $primary,
|
||||
linkColorHover: #104097,
|
||||
linkWeight: 400,
|
||||
listItemActive: $body-color,
|
||||
listItemBorder: rgba(0, 0, 0, 0.125),
|
||||
loadingSvg: url("../images/loading.svg"),
|
||||
logoSuffix: "dark",
|
||||
mfaLogoSuffix: ".png",
|
||||
navActiveBackground: $white,
|
||||
navActiveWeight: 600,
|
||||
navBackground: $primary,
|
||||
navBackgroundAlt: $secondary-alt,
|
||||
navOrgBackgroundColor: #fbfbfb,
|
||||
navWeight: 600,
|
||||
pwLetter: $body-color,
|
||||
pwNumber: #007fde,
|
||||
pwSpecial: #c40800,
|
||||
pwStrengthBackground: #e9ecef,
|
||||
separator: $secondary,
|
||||
separatorHr: rgb(0, 0, 0, 0.1),
|
||||
tableColorHover: #333333,
|
||||
tableLinkColor: $primary,
|
||||
tableLinkColorHover: #104097,
|
||||
tableRowHover: rgba(0, 0, 0, 0.03),
|
||||
tableSeparator: #dee2e6,
|
||||
textColor: $body-color,
|
||||
textDangerColor: $white,
|
||||
textInfoColor: $white,
|
||||
textHeadingColor: #333333,
|
||||
textMuted: #6c757d,
|
||||
textSuccessColor: $white,
|
||||
textWarningColor: $white,
|
||||
),
|
||||
dark: (
|
||||
primary: $darkPrimary,
|
||||
primaryAlt: $darkPrimary-alt,
|
||||
danger: $darkDanger,
|
||||
info: $darkInfo,
|
||||
success: $darkSuccess,
|
||||
warning: $darkWarning,
|
||||
backgroundColor: $darkDarkBlue2,
|
||||
badgeDangerBackground: $darkDanger,
|
||||
badgeDangerText: $darkDarkBlue2,
|
||||
badgeInfoBackground: $darkInfo,
|
||||
badgeInfoText: $darkDarkBlue2,
|
||||
badgePrimaryBackground: $darkLinks,
|
||||
badgePrimaryBackgroundHover: $darkPrimary-alt,
|
||||
badgePrimaryText: $darkDarkBlue2,
|
||||
badgeSecondaryBackground: $darkGrey2,
|
||||
badgeSecondaryText: $darkDarkBlue2,
|
||||
bgLightColor: $darkDarkBlue2,
|
||||
bgPrimaryColor: $darkPrimary,
|
||||
borderColor: $darkBlue1,
|
||||
borderPrimaryColor: $darkPrimary,
|
||||
browserInputIconsFilter: invert(1),
|
||||
btnDanger: $darkDanger,
|
||||
btnDangerHover: $darkDangerHover,
|
||||
btnDangerText: $darkDarkBlue2,
|
||||
btnLinkText: $white,
|
||||
btnLinkTextHover: $darkGrey1,
|
||||
btnOutlineDangerBackground: $darkDanger,
|
||||
btnOutlineDangerBackgroundHover: $darkDangerHover,
|
||||
btnOutlineDangerBorder: $darkDanger,
|
||||
btnOutlineDangerBorderHover: $darkDangerHover,
|
||||
btnOutlineDangerText: $darkDarkBlue2,
|
||||
btnOutlineDangerTextHover: $darkDarkBlue2,
|
||||
btnOutlinePrimaryBackground: $darkPrimary,
|
||||
btnOutlinePrimaryBackgroundHover: $darkPrimary-alt,
|
||||
btnOutlinePrimaryBorder: $darkPrimary,
|
||||
btnOutlinePrimaryBorderHover: $darkPrimary-alt,
|
||||
btnOutlinePrimaryText: $darkDarkBlue2,
|
||||
btnOutlinePrimaryTextHover: $darkDarkBlue2,
|
||||
btnOutlineSecondaryBackground: transparent,
|
||||
btnOutlineSecondaryBackgroundHover: transparent,
|
||||
btnOutlineSecondaryBorder: $darkGrey1,
|
||||
btnOutlineSecondaryBorderHover: $darkGrey2,
|
||||
btnOutlineSecondaryText: $white,
|
||||
btnOutlineSecondaryTextHover: $darkGrey2,
|
||||
btnPrimary: $darkLinks,
|
||||
btnPrimaryBorderHover: $darkPrimary-alt,
|
||||
btnPrimaryHover: $darkPrimary-alt,
|
||||
btnPrimaryText: $darkDarkBlue2,
|
||||
btnSecondary: transparent,
|
||||
btnSecondaryBorder: $darkGrey1,
|
||||
btnSecondaryBorderHover: $darkGrey2,
|
||||
btnSecondaryHover: transparent,
|
||||
btnSecondaryText: $white,
|
||||
btnSecondaryTextHover: $darkGrey2,
|
||||
calloutBackground: $darkBlue2,
|
||||
calloutColor: $white,
|
||||
cdkDraggingBackground: $darkDarkBlue1,
|
||||
codeColor: #e83e8c,
|
||||
dropdownBackground: $darkDarkBlue1,
|
||||
dropdownHover: rgba(255, 255, 255, 0.03),
|
||||
dropdownTextColor: $white,
|
||||
dropdownTextMuted: #bec6cf,
|
||||
focus: rgb(106 153 240 / 25%),
|
||||
footerBackgroundColor: $darkBlue1,
|
||||
foregroundColor: $darkDarkBlue1,
|
||||
headerColor: $darkBlue1,
|
||||
iconColor: #777777,
|
||||
iconHover: $darkGrey2,
|
||||
imgFilter: invert(1) grayscale(1),
|
||||
inputBackgroundColor: transparent,
|
||||
inputBorderColor: $darkGrey1,
|
||||
inputDisabledBackground: $darkBlue2,
|
||||
inputDisabledColor: $darkGrey1,
|
||||
inputPlaceholderColor: $darkInputPlaceholderColor,
|
||||
inputTextColor: $darkInputColor,
|
||||
layoutFrontendColor: $darkDarkBlue2,
|
||||
learnMoreHover: $darkPrimary-alt,
|
||||
linkColor: $darkLinks,
|
||||
linkColorHover: $darkLinks,
|
||||
linkWeight: 600,
|
||||
listItemActive: $darkPrimary,
|
||||
listItemBorder: $darkBlue1,
|
||||
loadingSvg: url("../images/loading-white.svg"),
|
||||
logoSuffix: "white",
|
||||
mfaLogoSuffix: "-w.png",
|
||||
navActiveBackground: $darkDarkBlue2,
|
||||
navActiveWeight: 600,
|
||||
navBackground: $darkDarkBlue1,
|
||||
navBackgroundAlt: $darkDarkBlue1,
|
||||
navOrgBackgroundColor: #161c26,
|
||||
navWeight: 400,
|
||||
pwLetter: $white,
|
||||
pwNumber: #52bdfb,
|
||||
pwSpecial: #ff7c70,
|
||||
pwStrengthBackground: $darkBlue2,
|
||||
separator: $darkBlue1,
|
||||
separatorHr: $darkBlue1,
|
||||
tableColorHover: $darkGrey1,
|
||||
tableLinkColor: $white,
|
||||
tableLinkColorHover: $white,
|
||||
tableRowHover: rgba(255, 255, 255, 0.03),
|
||||
tableSeparator: $darkBlue1,
|
||||
textColor: $darkGrey1,
|
||||
textDangerColor: $darkDarkBlue2,
|
||||
textHeadingColor: $white,
|
||||
textInfoColor: $darkDarkBlue2,
|
||||
textMuted: $darkGrey1,
|
||||
textSuccessColor: $darkDarkBlue2,
|
||||
textWarningColor: $darkDarkBlue2,
|
||||
),
|
||||
);
|
||||
|
||||
@mixin themify($themes: $themes) {
|
||||
@each $theme, $map in $themes {
|
||||
html.theme_#{$theme} & {
|
||||
$theme-map: () !global;
|
||||
@each $key, $submap in $map {
|
||||
$value: map-get(map-get($themes, $theme), "#{$key}");
|
||||
$theme-map: map-merge(
|
||||
$theme-map,
|
||||
(
|
||||
$key: $value,
|
||||
)
|
||||
) !global;
|
||||
}
|
||||
@content;
|
||||
$theme-map: null !global;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@function themed($key) {
|
||||
@return map-get($theme-map, $key);
|
||||
} ;
|
||||
196
apps/web/src/scss/vault-filters.scss
Normal file
196
apps/web/src/scss/vault-filters.scss
Normal file
@@ -0,0 +1,196 @@
|
||||
.filter {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.filter-heading {
|
||||
display: flex;
|
||||
text-transform: uppercase;
|
||||
align-items: center;
|
||||
|
||||
* {
|
||||
@include themify($themes) {
|
||||
color: themed("headingColor");
|
||||
}
|
||||
font-size: $font-size-base;
|
||||
}
|
||||
|
||||
button {
|
||||
@extend .no-btn;
|
||||
}
|
||||
|
||||
h3,
|
||||
button.filter-button {
|
||||
margin: 0;
|
||||
@include themify($themes) {
|
||||
color: themed("textMuted");
|
||||
}
|
||||
}
|
||||
|
||||
button.filter-button {
|
||||
&:hover,
|
||||
&:focus,
|
||||
&.active {
|
||||
@include themify($themes) {
|
||||
color: themed("linkColor") !important;
|
||||
}
|
||||
}
|
||||
&.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
button.toggle-button {
|
||||
&:hover,
|
||||
&:focus {
|
||||
@include themify($themes) {
|
||||
color: themed("iconHover") !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.filter-options {
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
margin: 0 0 15px 0;
|
||||
.nested-filter-options {
|
||||
list-style: none;
|
||||
margin-bottom: 0px;
|
||||
padding-left: 0.85em;
|
||||
}
|
||||
}
|
||||
|
||||
.filter-option {
|
||||
@include themify($themes) {
|
||||
color: themed("textColor");
|
||||
}
|
||||
|
||||
&.active {
|
||||
> .filter-buttons {
|
||||
.filter-button {
|
||||
@include themify($themes) {
|
||||
color: themed("linkColor") !important;
|
||||
}
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.edit-button {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.filter-buttons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
button,
|
||||
a {
|
||||
@extend .no-btn;
|
||||
}
|
||||
|
||||
.toggle-button {
|
||||
&:hover,
|
||||
&:focus {
|
||||
@include themify($themes) {
|
||||
color: themed("iconHover") !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.filter-button {
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
@include themify($themes) {
|
||||
color: themed("linkColor") !important;
|
||||
}
|
||||
text-decoration: none;
|
||||
}
|
||||
max-width: 90%;
|
||||
}
|
||||
|
||||
.edit-button {
|
||||
visibility: hidden;
|
||||
margin-left: auto;
|
||||
|
||||
@include themify($themes) {
|
||||
color: themed("headingButtonColor");
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
@include themify($themes) {
|
||||
color: themed("iconHover") !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.groupings {
|
||||
.card {
|
||||
#search {
|
||||
margin-bottom: 1rem;
|
||||
@include themify($themes) {
|
||||
background-color: themed("inputBackgroundColor");
|
||||
border-color: themed("inputBorderColor");
|
||||
color: themed("inputTextColor");
|
||||
}
|
||||
|
||||
&::placeholder {
|
||||
@include themify($themes) {
|
||||
color: themed("inputPlaceholderColor");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-weight: normal;
|
||||
text-transform: uppercase;
|
||||
@include themify($themes) {
|
||||
color: themed("textMuted");
|
||||
}
|
||||
}
|
||||
|
||||
ul:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.card-body a {
|
||||
@include themify($themes) {
|
||||
color: themed("textHeadingColor");
|
||||
font-weight: themed("linkWeight");
|
||||
}
|
||||
|
||||
&:hover {
|
||||
&.text-muted {
|
||||
}
|
||||
}
|
||||
}
|
||||
.show-active {
|
||||
display: none;
|
||||
}
|
||||
li.active {
|
||||
> .show-active,
|
||||
> div .show-active {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
li.active {
|
||||
> button:first-of-type,
|
||||
> div button:first-of-type {
|
||||
@include themify($themes) {
|
||||
color: themed("linkColor");
|
||||
}
|
||||
}
|
||||
|
||||
> .bwi,
|
||||
> div > .bwi {
|
||||
@include themify($themes) {
|
||||
color: themed("linkColor");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user