Files
tabler/core/scss/ui/_signal.scss

58 lines
1.6 KiB
SCSS

@use '../config' as *;
.signal {
// scss-docs-start signal-css-vars
--signal-size: #{$signal-size};
--signal-color: #{$text-secondary};
--signal-bars: 3;
--signal-bar-border-radius: #{$signal-bar-border-radius};
--signal-bar-inactive-opacity: #{$signal-bar-inactive-opacity};
--signal-gap: calc(var(--signal-size) * #{$signal-gap-ratio});
--signal-padding-y: calc(var(--signal-size) * #{$signal-padding-y-ratio});
--signal-padding-x: calc(var(--signal-size) * #{$signal-padding-x-ratio});
// scss-docs-end signal-css-vars
display: inline-flex;
flex-shrink: 0;
gap: var(--signal-gap);
align-items: flex-end;
width: var(--signal-size);
height: var(--signal-size);
padding: var(--signal-padding-y) var(--signal-padding-x);
vertical-align: middle;
}
// Each bar takes its share of the full height: the first of three is a third, the last is full
.signal-bar {
--signal-bar-index: 1;
flex: 1;
height: calc(100% * var(--signal-bar-index) / var(--signal-bars));
background: var(--signal-color);
opacity: var(--signal-bar-inactive-opacity);
@include border-radius(var(--signal-bar-border-radius));
&.active {
opacity: 1;
}
@for $index from 2 through $signal-max-bars {
&:nth-child(#{$index}) {
--signal-bar-index: #{$index};
}
}
}
// The number of bars is read from the markup, so the steps stay even for any count
@for $count from 2 through $signal-max-bars {
@if $count != 3 {
.signal:has(> .signal-bar:last-child:nth-child(#{$count})) {
--signal-bars: #{$count};
}
}
}
@each $name, $color in $theme-colors {
.signal-#{$name} {
--signal-color: var(--#{$name});
}
}