1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00
lens/packages/ui-components/button/src/button.scss
Gabriel 5128730fd2 chore: extract button from core for error-boundary
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-04-20 09:02:46 -04:00

143 lines
2.5 KiB
SCSS

/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
.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: var(--border-radius);
background: var(--buttonDefaultBackground);
padding: round(8px * .9) 8px * 1.5;
flex-shrink: 0;
line-height: 1;
font-size: var(--font-size);
user-select: none;
&[href] {
display: inline-block;
}
&.primary {
background: var(--buttonPrimaryBackground);
}
&.accent {
background: var(--buttonAccentBackground);
}
&.light {
background-color: var(--buttonLightBackground);
color: #505050;
}
&.plain {
color: inherit;
background: transparent;
box-shadow: none;
&:disabled {
background: none;
opacity: .5;
}
&.active,
&:focus:not(:active) {
color: var(--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 * 8px;
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;
}
}