better-xcloud/src/assets/css/button.styl

182 lines
4.2 KiB
Stylus

.bx-button {
--button-rgb: var(--bx-default-button-rgb);
--button-hover-rgb: var(--bx-default-button-hover-rgb);
--button-active-rgb: var(--bx-default-button-active-rgb);
--button-disabled-rgb: var(--bx-default-button-disabled-rgb);
background-color: unquote('rgb(var(--button-rgb))');
user-select: none;
-webkit-user-select: none;
color: #fff;
font-family: var(--bx-title-font-semibold);
font-size: 14px;
border: none;
font-weight: 400;
height: var(--bx-button-height);
border-radius: 4px;
padding: 0 8px;
text-transform: uppercase;
cursor: pointer;
overflow: hidden;
&:not([disabled]):active {
background-color: unquote('rgb(var(--button-active-rgb))');
}
&:focus {
outline: none !important;
}
&:not([disabled]):not(:active) {
&:hover, &.bx-focusable:focus {
background-color: unquote('rgb(var(--button-hover-rgb))');
}
}
&:disabled {
cursor: default;
background-color: unquote('rgb(var(--button-disabled-rgb))');
}
&.bx-ghost {
background-color: transparent;
&:not([disabled]):not(:active) {
&:hover, &.bx-focusable:focus {
background-color: unquote('rgb(var(--button-hover-rgb))');
}
}
}
&.bx-primary {
--button-rgb: var(--bx-primary-button-rgb);
&:not([disabled]):active {
--button-active-rgb: var(--bx-primary-button-active-rgb);
}
&:not([disabled]):not(:active) {
&:hover, &.bx-focusable:focus {
--button-hover-rgb: var(--bx-primary-button-hover-rgb);
}
}
&:disabled {
--button-disabled-rgb: var(--bx-primary-button-disabled-rgb);
}
}
&.bx-danger {
--button-rgb: var(--bx-danger-button-rgb);
&:not([disabled]):active {
--button-active-rgb: var(--bx-danger-button-active-rgb);
}
&:not([disabled]):not(:active) {
&:hover, &.bx-focusable:focus {
--button-hover-rgb: var(--bx-danger-button-hover-rgb);
}
}
&:disabled {
--button-disabled-rgb: var(--bx-danger-button-disabled-rgb);
}
}
&.bx-frosted {
--button-alpha: 0.2;
background-color: unquote('rgba(var(--button-rgb), var(--button-alpha))');
backdrop-filter: blur(4px) brightness(1.5);
&:not([disabled]):not(:active) {
&:hover, &.bx-focusable:focus {
background-color: unquote('rgba(var(--button-hover-rgb), var(--button-alpha))');
}
}
}
&.bx-drop-shadow {
box-shadow: 0 0 4px #00000080;
}
&.bx-tall {
height: calc(var(--bx-button-height) * 1.5) !important;
}
&.bx-circular {
border-radius: var(--bx-button-height);
height: var(--bx-button-height);
}
svg {
display: inline-block;
width: 16px;
height: var(--bx-button-height);
}
span {
display: inline-block;
/* height: var(--bx-button-height); */
line-height: var(--bx-button-height);
vertical-align: middle;
/* vertical-align: -webkit-baseline-middle; */
color: #fff;
overflow: hidden;
white-space: nowrap;
&:not(:only-child) {
margin-left: 10px;
}
}
}
.bx-focusable {
position: relative;
overflow: visible;
&::after {
border: 2px solid transparent;
border-radius: 10px;
}
&:focus::after {
offset = -6px;
content: '';
border-color: white;
position: absolute;
top: offset;
left: offset;
right: offset;
bottom: offset;
}
html[data-active-input=touch] &,
html[data-active-input=mouse] & {
&:focus::after {
border-color: transparent !important;
}
}
&.bx-circular {
&::after {
border-radius: var(--bx-button-height);
}
}
}
a.bx-button {
display: inline-block;
&.bx-full-width {
text-align: center;
}
}
button.bx-inactive {
pointer-events: none;
opacity: 0.2;
background: transparent !important;
}