open-vault/ui/app/styles/core/buttons.scss
Jordan Reimer 7da2085fa3
MFA Config (#15200)
* adds mirage factories for mfa methods and login enforcement

* adds mirage handler for mfa config endpoints

* adds mirage identity manager for uuids

* updates mfa test to use renamed mfaLogin mirage handler

* updates mfa login workflow for push methods (#15214)

* MFA Login Enforcement Model (#15244)

* adds mfa login enforcement model, adapter and serializer

* updates mfa methods to hasMany realtionship and transforms property names

* updates login enforcement adapter to use urlForQuery over buildURL

* Model for mfa method (#15218)

* Model for mfa method

* Added adapter and serializer for mfa method

- Updated mfa method model
- Basic route to handle list view
- Added MFA to access nav

* Show landing page if methods are not configured

* Updated adapter,serializer

- Backend is adding new endpoint to list all the mfa methods

* Updated landing page

- Added MFA diagram
- Created helper to resolve full path for assets like images

* Remove ember assign

* Fixed failing test

* MFA method and enforcement list view (#15353)

* MFA method and enforcement list view

- Added new route for list views
- List mfa methods along with id, type and icon
- Added client side pagination to list views

* Throw error if method id is not present

* MFA Login Enforcement Form (#15410)

* adds mfa login enforcement form and header components and radio card component

* skips login enforcement form tests for now

* adds jsdoc annotations for mfa-login-enforcement-header component

* adds error handling when fetching identity targets in login enforcement form component

* updates radio-card label elements

* MFA Login Enforcement Create and Edit routes (#15422)

* adds mfa login enforcement form and header components and radio card component

* skips login enforcement form tests for now

* updates to login enforcement form to fix issues hydrating methods and targets from model when editing

* updates to mfa-config mirage handler and login enforcement handler

* fixes issue with login enforcement serializer normalizeItems method throwing error on save

* updates to mfa route structure

* adds login enforcement create and edit routes

* MFA Login Enforcement Read Views (#15462)

* adds login enforcement read views

* skip mfa-method-list-item test for now

* MFA method form (#15432)

* MFA method form

- Updated model for form attributes
- Form for editing, creating mfa methods

* Added comments

* Update model for mfa method

* Refactor buildURL in mfa method adapter

* Update adapter to handle mfa create

* Fixed adapter to handle create mfa response

* Sidebranch: MFA end user setup (#15273)

* initial setup of components and route

* fix navbar

* replace parent component with controller

* use auth service to return entity id

* adapter and some error handling:

* clean up adapter and handle warning

* wip

* use library for qrCode generation

* clear warning and QR code display fix

* flow for restart setup

* add documentation

* clean up

* fix warning issue

* handle root user

* remove comment

* update copy

* fix margin

* address comment

* MFA Guided Setup Route (#15479)

* adds mfa method create route with type selection workflow

* updates mfa method create route links to use DocLink component

* MFA Guided Setup Config View (#15486)

* adds mfa guided setup config view

* resets type query param on mfa method create route exit

* hide next button if type is not selected in mfa method create route

* updates to sure correct state when changing mfa method type in guided setup

* Enforcement view at MFA method level (#15485)

- List enforcements for each mfa method
- Delete MFA method if no enforcements are present
- Moved method, enforcement list item component to mfa folder

* MFA Login Enforcement Validations (#15498)

* adds model and form validations for mfa login enforcements

* updates mfa login enforcement validation messages

* updates validation message for mfa login enforcement targets

* adds transition action to configure mfa button on landing page

* unset enforcement on preference change in mfa guided setup workflow

* Added validations for mfa method model (#15506)

* UI/mfa breadcrumbs and small fixes (#15499)

* add active class when on index

* breadcrumbs

* remove box-shadow to match designs

* fix refresh load mfa-method

* breadcrumb create

* add an empty state the enforcements list view

* change to beforeModel

* UI/mfa small bugs (#15522)

* remove pagintion and fix on methods list view

* fix enforcements

* Fix label for value on radio-card (#15542)

* MFA Login Enforcement Component Tests (#15539)

* adds tests for mfa-login-enforcement-header component

* adds tests for mfa-login-enforcement-form component

* Remove default values from mfa method model (#15540)

- use passcode had a default value, as a result it was being sent
with all the mfa method types during save and edit flows..

* UI/mfa small cleanup (#15549)

* data-test-mleh -> data-test-mfa

* Only one label per radio card

* Remove unnecessary async

* Simplify boolean logic

* Make mutation clear

* Revert "data-test-mleh -> data-test-mfa"

This reverts commit 31430df7bb42580a976d082667cb6ed1f09c3944.

* updates mfa login enforcement form to only display auth method types for current mounts as targets (#15547)

* remove token type (#15548)

* remove token type

* conditional param

* removes type from mfa method payload and fixes bug transitioning to method route on save success

* removes punctuation from mfa form error message string match

* updates qr-code component invocation to angle bracket

* Re-trigger CI jobs with empty commit

Co-authored-by: Arnav Palnitkar <arnav@hashicorp.com>
Co-authored-by: Angel Garbarino <Monkeychip@users.noreply.github.com>
Co-authored-by: Chelsea Shaw <82459713+hashishaw@users.noreply.github.com>
Co-authored-by: Michele Degges <mdeggies@gmail.com>
2022-05-20 18:40:16 -06:00

275 lines
5.3 KiB
SCSS

$button-box-shadow-standard: 0 3px 1px 0 rgba($black, 0.12);
.button {
background-color: $grey-lightest;
border: 1px solid $grey-light;
box-shadow: $box-shadow-low;
color: $ui-gray-800;
display: inline-block;
font-size: $size-small;
font-weight: $font-weight-semibold;
height: 2.5rem;
line-height: 1.6;
min-width: 6rem;
padding: $size-10 $size-8;
text-decoration: none;
transition: background-color $speed, border-color $speed, box-shadow $speed, color $speed;
vertical-align: middle;
&.is-icon {
padding: 0.25rem $size-3;
}
&:active,
&.is-active,
&:focus,
&.is-focused {
border-color: darken($grey-light, 10%);
box-shadow: $button-box-shadow-standard;
color: darken($grey-dark, 10%);
}
&.is-inverted.is-outlined {
box-shadow: none;
}
&.is-transparent {
color: currentColor;
background: none;
border: none;
box-shadow: none;
min-width: auto;
padding: 0;
}
&.is-flat {
min-width: auto;
border: none;
box-shadow: none;
}
@each $name, $pair in $colors {
$color: nth($pair, 1);
@if $name == 'primary' {
$color: $blue;
}
$color-invert: nth($pair, 2);
&.is-#{$name} {
border-color: darken($color, 2%);
background-color: $color;
color: $color-invert;
&:hover:not([disabled]),
&.is-hovered {
background-color: darken($color, 5%);
border-color: darken($color, 5%);
box-shadow: $box-shadow-middle;
}
&:active,
&.is-active {
background-color: darken($color, 10%);
border-color: darken($color, 10%);
box-shadow: $box-shadow-middle;
}
&:focus,
&.is-focused {
border-color: darken($color, 10%);
box-shadow: $button-box-shadow-standard;
}
&.is-outlined {
border-color: $color;
color: $color;
background-color: transparent;
&.is-important {
border-color: $color;
}
&:hover,
&.is-hovered,
&:focus,
&.is-focused {
background-color: transparent;
border-color: darken($color, 10%);
color: $color;
}
&:active,
&.is-active {
background-color: transparent;
border-color: darken($color, 10%);
color: darken($color, 10%);
}
}
&.is-underlined {
&:active,
&.is-active {
background-color: transparent;
border-bottom: 2px solid darken($color, 10%);
border-radius: unset;
color: darken($color, 10%);
}
}
&.is-inverted.is-outlined {
border-color: rgba($color-invert, 0.5);
color: rgba($color-invert, 0.9);
&:hover,
&.is-hovered,
&:focus,
&.is-focused {
background-color: transparent;
border-color: $color-invert;
color: $color-invert;
}
&:active,
&.is-active {
background-color: rgba($color-invert, 0.2);
border-color: $color-invert;
color: $color-invert;
box-shadow: none;
}
}
}
}
&.is-primary {
font-weight: $font-weight-bold;
text-shadow: 0 1px 1px rgba($black, 0.25);
}
&.is-link {
color: $link;
text-decoration: none;
font-weight: $font-weight-semibold;
box-shadow: none;
min-width: 4rem;
}
&.is-ghost {
background-color: transparent;
border-color: transparent;
box-shadow: none;
color: $blue;
&:hover {
background-color: $grey-lightest;
}
}
&.is-orange {
background-color: $orange;
border-color: $orange;
color: $white;
&:hover,
&.is-hovered {
background-color: darken($orange, 5%);
border-color: darken($orange, 5%);
}
}
&.is-compact {
height: 2rem;
padding: $size-11 $size-8;
}
.has-text-info & {
font-weight: $font-weight-semibold;
}
&.has-text-danger {
border: 1px solid $red-500;
}
&.tool-tip-trigger {
color: $grey-dark;
min-width: auto;
padding: 0;
}
&.has-icon-left,
&.has-icon-right {
.hs-icon {
height: 16px;
min-width: auto;
width: 16px;
}
}
&.has-icon-left {
.hs-icon {
&,
&:first-child:last-child {
position: relative;
left: -$size-10;
}
}
}
&.has-icon-right {
.hs-icon {
&,
&:first-child:last-child {
margin-left: $spacing-xxs;
margin-right: -$spacing-xxs;
}
}
}
}
.button.icon {
box-sizing: border-box;
padding: 0 $size-11;
height: 24px;
width: 24px;
&,
& .icon {
min-width: 0;
}
}
.button.auto-width,
.button .icon.auto-width {
width: auto;
min-width: auto;
margin: 0 !important;
}
.button.next-feature-step {
background: $white;
border: 1px solid $grey-light;
border-radius: $radius;
box-shadow: none;
color: $blue;
display: flex;
height: auto;
line-height: 1.2;
justify-content: space-between;
text-align: left;
white-space: normal;
padding: $size-8;
width: 100%;
}
a.button.disabled {
color: $white;
background-color: $grey-dark;
opacity: 0.5;
border-color: transparent;
box-shadow: none;
cursor: default;
}
.icon-button {
background: transparent;
padding: 0;
margin: 0;
border: none;
cursor: pointer;
}