@innovaccer/design-system
Version:
React components library project for Innovaccer Design System
554 lines (453 loc) • 12.3 kB
CSS
.Button {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
box-sizing: border-box;
position: relative;
vertical-align: middle;
cursor: pointer;
user-select: none;
border: 0;
border-radius: var(--border-radius-10);
padding-top: var(--spacing-20);
padding-bottom: var(--spacing-20);
text-align: center;
font-family: var(--font-family);
font-weight: var(--font-weight-normal);
font-size: var(--font-size);
line-height: var(--font-height-s);
color: var(--text-white);
transition: var(--duration--fast-01) var(--standard-productive-curve);
}
.Button--disabled {
cursor: not-allowed;
}
.Button:focus-visible {
outline: var(--border-width-05) solid var(--primary-focus);
outline-offset: var(--spacing-05);
}
.Button--iconAlign-right {
flex-direction: row-reverse;
}
.Button-regularIcon--left {
margin-left: calc(-1 * var(--spacing-05));
}
.Button-regularIcon--right {
margin-right: calc(-1 * var(--spacing-05));
}
.Button--tiny {
height: var(--spacing-60);
padding-right: var(--spacing-20);
padding-left: var(--spacing-20);
padding-top: var(--spacing-10);
padding-bottom: var(--spacing-10);
font-size: var(--font-size-s);
font-weight: var(--font-weight-medium);
}
.Button--tinySquare {
width: var(--spacing-60);
}
.Button--regular {
height: var(--spacing-80);
padding-right: var(--spacing-30);
padding-left: var(--spacing-30);
}
.Button--regularSquare {
width: var(--spacing-80);
}
.Button--large {
height: 40px;
padding-right: var(--spacing-40);
padding-left: var(--spacing-40);
line-height: var(--font-height-m);
font-size: var(--font-size-m);
}
.Button--largeSquare {
width: 40px;
}
.Button--tinySquare .Button-icon,
.Button--largeSquare .Button-icon,
.Button--tinySquare .Spinner,
.Button--largeSquare .Spinner {
padding-left: var(--spacing-05);
padding-right: var(--spacing-05);
}
.Button--expanded {
width: 100%;
}
.Button-icon {
line-height: inherit;
display: flex;
align-items: center;
}
.Button-icon--left {
margin-right: var(--spacing-15);
}
.Button-icon--right {
margin-left: var(--spacing-15);
}
.Button--basic {
background: var(--secondary-light);
color: var(--inverse);
}
.Button--basic:hover {
background: var(--secondary);
}
.Button--basic:active {
background: var(--secondary-dark);
}
.Button--basic-disabled {
background: var(--secondary-lighter);
color: var(--inverse-lightest);
}
.Button--primary {
background: var(--primary);
}
.Button--primary:hover {
background: var(--primary-dark);
}
.Button--primary:active {
background: var(--primary-darker);
}
.Button--primary-disabled {
background: var(--primary-lighter);
}
.Button-infoIcon--primary {
color: var(--text-link);
}
.Button--success {
background: var(--primary);
}
.Button--success:hover {
background: var(--primary-dark);
}
.Button--success:active {
background: var(--primary-darker);
}
.Button--success-disabled {
background: var(--primary-lighter);
}
.Button-infoIcon--success {
color: var(--text-link);
}
.Button--alert {
background: var(--alert);
}
.Button--alert:hover {
background: var(--alert-dark);
}
.Button--alert:active {
background: var(--alert-darker);
}
.Button--alert-disabled {
background: var(--alert-lighter);
}
.Button-infoIcon--alert {
color: var(--alert);
}
.Button--transparent {
background: transparent;
color: var(--inverse);
}
.Button--transparent:hover {
background: var(--secondary);
}
.Button--transparent:active {
background: var(--secondary-dark);
}
.Button--transparent:focus-visible:active {
background: var(--secondary-dark);
}
.Button--transparent-disabled {
background: transparent;
color: var(--inverse-lightest);
}
.Button-spinner {
display: flex;
position: absolute;
z-index: 1;
}
.Button--selected {
background: var(--primary-ultra-light);
color: var(--primary-dark);
box-shadow: inset 0 0 0 2px var(--primary);
}
.Button--selected:hover {
background: var(--primary-lightest);
}
.Button--selected:active {
background: var(--primary-lighter);
color: var(--primary-darker);
box-shadow: inset 0 0 0 2px var(--primary-dark);
}
.Button--selected:focus-visible {
background: var(--primary-ultra-light);
outline: var(--border-width-05) solid var(--primary-focus);
outline-offset: var(--spacing-05);
box-shadow: inset 0 0 0 var(--border-width-05) var(--primary);
}
.Button--selected:focus-visible:active {
background: var(--primary-lighter);
outline: var(--border-width-05) solid var(--primary-focus);
outline-offset: var(--spacing-05);
box-shadow: inset 0 0 0 var(--border-width-05) var(--primary-dark);
}
.Button--selected-disabled {
background: var(--primary-ultra-light);
color: var(--primary-lighter);
box-shadow: inset 0 0 0 2px var(--primary-lightest);
}
.Button-text--hidden {
visibility: hidden;
}
.Button-text {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.Button-infoIconWrapper {
position: absolute;
top: -4px;
right: -4px;
width: var(--spacing-30);
height: var(--spacing-30);
box-sizing: border-box;
border-radius: var(--border-radius-full);
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
border: var(--border-width-2-5) solid var(--secondary-lightest);
pointer-events: none;
}
.Button-infoIconWrapper--transparent {
border: none;
background: transparent;
top: var(--spacing-2-5);
right: var(--spacing-2-5);
}
.Button-infoIconWrapper--iconOnly-transparent {
top: var(--spacing-2-5);
right: var(--spacing-2-5);
}
.Button-infoIconWrapper-outlined--basic {
background: var(--secondary-lightest);
}
.Button-infoIconWrapper-outlined--primary {
background: var(--primary-ultra-light);
}
.Button-infoIconWrapper-outlined--alert {
background: var(--alert-ultra-light);
}
.Button-infoIconWrapper--basic {
background: var(--secondary-lighter);
}
.Button-infoIconWrapper--primary,
.Button-infoIconWrapper--success {
background: var(--primary-lightest);
}
.Button-infoIconWrapper--alert {
background: var(--alert-lightest);
}
.Button-infoIcon {
color: var(--text-subtle);
}
/* outlined button styles */
.Button-outlined--basic {
color: var(--inverse);
background: transparent;
box-shadow: inset 0 0 0 1px var(--secondary);
}
.Button-outlined--basic:hover {
background: var(--secondary-lighter);
box-shadow: inset 0 0 0 1px var(--inverse-lightest);
}
.Button-outlined--basic:active {
background: var(--secondary);
box-shadow: inset 0 0 0 1px var(--inverse-lightest);
}
.Button-outlined--basic:focus-visible {
outline: var(--border-width-05) solid var(--primary-focus);
outline-offset: var(--spacing-05);
box-shadow: inset 0 0 0 var(--border-width-2-5) var(--secondary);
}
.Button-outlined--basic-disabled {
color: var(--inverse-lightest);
background: transparent;
box-shadow: inset 0 0 0 1px var(--secondary);
}
.Button-outlined--selected {
background: var(--primary-ultra-light);
color: var(--primary-dark);
box-shadow: inset 0 0 0 2px var(--primary);
}
.Button-outlined--selected:hover {
background: var(--primary-lightest);
box-shadow: inset 0 0 0 2px var(--primary);
}
.Button-outlined--selected:active {
background: var(--primary-lighter);
color: var(--primary-darker);
box-shadow: inset 0 0 0 2px var(--primary-dark);
}
.Button-outlined--selected:focus-visible {
color: var(--primary-dark);
outline: var(--border-width-05) solid var(--primary-focus);
outline-offset: var(--spacing-05);
box-shadow: inset 0 0 0 var(--border-width-05) var(--primary);
}
.Button-outlined--selected:focus-visible:active {
background: var(--primary-lighter);
color: var(--primary-darker);
outline: var(--border-width-05) solid var(--primary-focus);
outline-offset: var(--spacing-05);
box-shadow: inset 0 0 0 var(--border-width-05) var(--primary-dark);
}
.Button-outlined--selected-disabled {
background: var(--primary-ultra-light);
color: var(--primary-lighter);
box-shadow: inset 0 0 0 2px var(--primary-lightest);
}
.Button-outlined--primary {
background: transparent;
box-shadow: inset 0 0 0 1px var(--primary);
color: var(--primary);
}
.Button-outlined--primary:hover {
background: var(--primary-ultra-light);
box-shadow: inset 0 0 0 1px var(--primary-dark);
color: var(--primary-dark);
}
.Button-outlined--primary:active {
background: var(--primary-lightest);
box-shadow: inset 0 0 0 1px var(--primary-dark);
color: var(--primary-dark);
}
.Button-outlined--primary:focus-visible {
outline: var(--border-width-05) solid var(--primary-focus);
outline-offset: var(--spacing-05);
box-shadow: inset 0 0 0 var(--border-width-2-5) var(--primary);
}
.Button-outlined--primary-disabled {
background: transparent;
color: var(--primary-lighter);
box-shadow: inset 0 0 0 1px var(--primary-lighter);
}
.Button-infoIcon-outlined--primary {
color: var(--text-link);
}
.Button-outlined--alert {
background: transparent;
box-shadow: inset 0 0 0 1px var(--alert);
color: var(--alert);
}
.Button-outlined--alert:hover {
background: var(--alert-ultra-light);
box-shadow: inset 0 0 0 1px var(--alert-dark);
color: var(--alert-dark);
}
.Button-outlined--alert:active {
background: var(--alert-lightest);
box-shadow: inset 0 0 0 1px var(--alert-dark);
color: var(--alert-dark);
}
.Button-outlined--alert:focus-visible {
outline: var(--border-width-05) solid var(--primary-focus);
outline-offset: var(--spacing-05);
box-shadow: inset 0 0 0 var(--border-width-2-5) var(--alert);
}
.Button-outlined--alert-disabled {
background: transparent;
color: var(--alert-lighter);
box-shadow: inset 0 0 0 1px var(--alert-lighter);
}
.Button-infoIcon-outlined--alert {
color: var(--alert);
}
.Button-srOnly {
position: absolute;
width: var(--spacing-2-5);
height: var(--spacing-2-5);
padding: 0;
margin: calc(-1 * var(--spacing-2-5));
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
@media (forced-colors: active) {
.Button--basic,
.Button--primary,
.Button--success,
.Button--alert,
.Button--transparent {
border: var(--border-width-2-5) solid ButtonText;
}
.Button--basic-disabled,
.Button--primary-disabled,
.Button--success-disabled,
.Button--alert-disabled,
.Button--transparent-disabled {
border: var(--border-width-2-5) solid GrayText;
}
/* Selected state: inset box-shadow acts as the visible border */
.Button--selected,
.Button--selected:hover,
.Button--selected:active,
.Button--selected-disabled {
border: var(--border-width-05) solid ButtonText;
box-shadow: none;
}
.Button--selected:focus-visible,
.Button--selected:focus-visible:active {
outline: var(--border-width-05) solid Highlight;
box-shadow: none;
}
/* Outlined variants: inset box-shadow is the only visible border */
.Button-outlined--basic,
.Button-outlined--basic:hover,
.Button-outlined--basic:active,
.Button-outlined--basic-disabled {
border: var(--border-width-2-5) solid ButtonText;
box-shadow: none;
}
.Button-outlined--basic:focus-visible {
outline: var(--border-width-05) solid Highlight;
box-shadow: none;
}
.Button-outlined--selected,
.Button-outlined--selected:hover,
.Button-outlined--selected:active,
.Button-outlined--selected-disabled {
border: var(--border-width-05) solid ButtonText;
box-shadow: none;
}
.Button-outlined--selected:focus-visible,
.Button-outlined--selected:focus-visible:active {
outline: var(--border-width-05) solid Highlight;
box-shadow: none;
}
.Button-outlined--primary,
.Button-outlined--primary:hover,
.Button-outlined--primary:active,
.Button-outlined--primary-disabled {
border: var(--border-width-2-5) solid ButtonText;
box-shadow: none;
}
.Button-outlined--primary:focus-visible {
outline: var(--border-width-05) solid Highlight;
box-shadow: none;
}
.Button-outlined--alert,
.Button-outlined--alert:hover,
.Button-outlined--alert:active,
.Button-outlined--alert-disabled {
border: var(--border-width-2-5) solid ButtonText;
box-shadow: none;
}
.Button-outlined--alert:focus-visible {
outline: var(--border-width-05) solid Highlight;
box-shadow: none;
}
}