// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only .module-Button { @mixin focus-box-shadow($inner-color, $outer-color) { &:focus { box-shadow: 0 0 0 1px $inner-color, 0 0 0 4px $outer-color; } } @mixin hover-and-active-states($background-color, $mix-color) { &:hover:not(:disabled) { background: mix($background-color, $mix-color, 85%); } &:active:not(:disabled) { background: mix($background-color, $mix-color, 75%); } } @include button-reset; border-radius: 4px; padding: 8px 16px; text-align: center; user-select: none; @include keyboard-mode { @include focus-box-shadow($color-white, $color-ultramarine); } @include dark-keyboard-mode { @include focus-box-shadow($color-black, $color-ultramarine-icon); } &:disabled { cursor: not-allowed; } &--medium { @include font-body-1-bold; } &--small { @include font-body-2; @include rounded-corners; padding: 6px 12px; } &--primary { $color: $color-white; $background-color: $color-ultramarine; color: $color; background: $background-color; &:disabled { color: fade-out($color, 0.4); background: fade-out($background-color, 0.6); } @include light-theme { @include hover-and-active-states($background-color, $color-black); } @include dark-theme { @include hover-and-active-states($background-color, $color-white); } } &--secondary { @include light-theme { $color: $color-gray-90; $background-color: $color-gray-05; color: $color; background: $background-color; &:disabled { color: $color-black-alpha-40; background: fade-out($background-color, 0.6); } &--affirmative { color: $color-ultramarine; } &--destructive { color: $color-accent-red; } @include hover-and-active-states($background-color, $color-black); } @include dark-theme { $color: $color-gray-05; $background-color: $color-gray-65; color: $color; background: $background-color; &:disabled { color: $color-white-alpha-20; background: fade-out($background-color, 0.6); } &--affirmative { color: $color-ultramarine-light; } &--destructive { color: $color-accent-red; } @include hover-and-active-states($background-color, $color-white); } } &--destructive { $color: $color-white; $background-color: $color-accent-red; color: $color; background: $background-color; &:disabled { color: fade-out($color, 0.4); background: fade-out($background-color, 0.6); } @include light-theme { @include hover-and-active-states($background-color, $color-black); } @include dark-theme { @include hover-and-active-states($background-color, $color-white); } } }