/** * Copyright (c) 2021 OpenLens Authors * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Software, and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ .Button { position: relative; overflow: hidden; // required for transition effect on hover color: white; font-family: var(--font-main); text-align: center; text-decoration: none; cursor: pointer; border-radius: $radius; background: $buttonDefaultBackground; padding: round($padding * .9) $padding * 1.5; flex-shrink: 0; line-height: 1; font-size: $font-size; user-select: none; &[href] { display: inline-block; } &.primary { background: $buttonPrimaryBackground; } &.accent { background: $buttonAccentBackground; } &.light { background-color: $buttonLightBackground; color: #505050; } &.plain { color: inherit; background: transparent; box-shadow: none; &:disabled { background: none; opacity: .5; } &.active, &:focus:not(:active) { color: $buttonPrimaryBackground; box-shadow: 0 0 0 1px inset; } } &.outlined { color: inherit; background: transparent; &.active, &:focus { color: inherit; box-shadow: 0 0 0 1px inset; } } &.big { font-size: 2.2 * $unit; border-radius: 50px; padding: .75em 1em; } &.round { border-radius: 50%; padding: .7em; } form:not([novalidate]):invalid &[type=submit]:not(.active), &:disabled { opacity: 50%; pointer-events: none; } &.waiting { pointer-events: none; &:after { content: ""; position: absolute; left: 0; top: 0; width: 0; height: 100%; background: transparentize(white, .85); animation: waiting 1.5s infinite linear; } } &:focus { outline: none; } &:focus:not(:active) { transition: box-shadow 350ms; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, .5); } &:active:before { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: inherit; background: transparentize(white, .85); transform-origin: left top; transition: transform 150ms; transform: rotate(0deg); // hackfix: safari prevents clicks on button when click-target is a child element nor button itself pointer-events: none; } &:before { content: ""; transform: rotate(-90deg); } } @keyframes waiting { 0% { left: 0; width: 0; } 50% { left: 25%; width: 75%; } 75% { left: 100%; width: 0; } }