broadcast/ui/src/Radio.module.scss

117 lines
2.6 KiB
SCSS

@-webkit-keyframes rotor{
from{ -webkit-transform: rotate(0deg); }
to{ -webkit-transform: rotate(360deg); }
}
@-moz-keyframes rotor{
from{ -moz-transform: rotate(0deg); }
to{ -moz-transform: rotate(360deg); }
}
@-o-keyframes rotor{
from{ -o-transform: rotate(0deg); }
to{ -o-transform: rotate(360deg); }
}
@keyframes rotor{
from{ transform: rotate(0deg); }
to{ transform: rotate(360deg); }
}
$circle-size: 350px;
$inner-size: 310px;
$border-radius: 160px;
$margin: 20px;
$shadow-size: 20px;
$rotor-color-active: #6eeb34;
$rotor-color-stopped: #ff0000;
$rotor-color-loading: #fcc203;
$disconnected-color: #8a8987;
$hover-color: #fff7b0;
@mixin wedge($color) {
background-image: linear-gradient(45deg,
white 0%,
white 30%,
$color 30%,
$color 70%,
white 70%,
white 100%);
}
@mixin rotor-animation {
-webkit-animation: rotor 1.5s linear 0s infinite normal;
-mox-animation: rotor 1.5s linear 0s infinite normal;
-o-animation: rotor 1.5s linear 0s infinite normal;
animation: rotor 1.5s linear 0s infinite normal;
}
@mixin circle-shape {
width: $circle-size;
height: $circle-size;
border-radius: $border-radius;
/*** outer circle position: under */
z-index: 1;
position: absolute;
}
.buttonWrap {
width: $circle-size;
height: $circle-size;
margin: $margin 0;
display: inline-block;
position: relative;
/* Inner circle */
.clicker {
width: $inner-size;
height: $inner-size; /* 20px smaller b/c of margin below */
margin: $margin;
background-color: #fff;
border-radius: $border-radius;
/* Overlays this circle on the .circle */
z-index: 2;
position: absolute;
/* centers the text: adjust to desired size */
display: flex;
justify-content: center;
align-content: center;
flex-direction: column;
text-align: center;
font-size: 60px;
user-select: none;
/* shadow */
-webkit-box-shadow: 0px 0px $shadow-size 0px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 0px 0px $shadow-size 0px rgba(0, 0, 0, 0.5);
-o-box-shadow: 0px 0px $shadow-size 0px rgba(0, 0, 0, 0.5);
box-shadow: 0px 0px $shadow-size 0px rgba(0, 0, 0, 0.5);
&:hover {
background-color: $hover-color;
}
}
/** outer circle **/
.circleDisconnected {
@include circle-shape;
background-color: $disconnected-color;
}
.circleStarted {
@include circle-shape;
@include wedge($rotor-color-active);
@include rotor-animation;
}
.circleLoading {
@include circle-shape;
@include wedge($rotor-color-loading);
@include rotor-animation;
}
.circleStopped {
@include circle-shape;
background-color: $rotor-color-stopped;
}
}