solana/explorer/src/scss/dashkit/_avatar.scss

200 lines
3.4 KiB
SCSS
Raw Normal View History

//
// avatar.scss
// Dashkit component
//
@use 'sass:math';
// General
.avatar {
position: relative;
display: inline-block;
width: $avatar-size-base;
height: $avatar-size-base;
font-size: math.div($avatar-size-base, 3);
// Loads mask images so they don't lag on hover
&:after {
content: '';
position: absolute;
width: 0;
height: 0;
background-image: url(#{$path-to-img}/masks/avatar-status.svg),
url(#{$path-to-img}/masks/avatar-group.svg),
url(#{$path-to-img}/masks/avatar-group-hover.svg),
url(#{$path-to-img}/masks/avatar-group-hover-last.svg);
}
}
.avatar-img {
width: 100%;
height: 100%;
object-fit: cover;
}
.avatar-title {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
line-height: 0;
background-color: $avatar-title-bg;
color: $avatar-title-color;
}
// Status
.avatar-online,
.avatar-offline {
&::before {
content: '';
position: absolute;
bottom: 5%;
right: 5%;
width: 20%;
height: 20%;
border-radius: 50%;
}
.avatar-img {
mask-image: url(#{$path-to-img}/masks/avatar-status.svg);
mask-size: 100% 100%;
}
}
.avatar-online::before {
background-color: $success;
}
.avatar-offline::before {
background-color: $gray-500;
}
// Sizing
.avatar-xs {
width: $avatar-size-xs;
height: $avatar-size-xs;
font-size: math.div($avatar-size-xs, 3);
}
.avatar-sm {
width: $avatar-size-sm;
height: $avatar-size-sm;
font-size: math.div($avatar-size-sm, 3);
}
.avatar-lg {
width: $avatar-size-lg;
height: $avatar-size-lg;
font-size: math.div($avatar-size-lg, 3);
}
.avatar-xl {
width: $avatar-size-xl;
height: $avatar-size-xl;
font-size: math.div($avatar-size-xl, 3);
}
.avatar-xxl {
width: $avatar-size-xl;
height: $avatar-size-xl;
font-size: math.div($avatar-size-xl, 3);
@include media-breakpoint-up(md) {
width: $avatar-size-xxl;
height: $avatar-size-xxl;
font-size: math.div($avatar-size-xxl, 3);
}
}
// Ratio
.avatar.avatar-4by3 {
width: math.div($avatar-size-base * 4, 3);
}
.avatar-xs.avatar-4by3 {
width: math.div($avatar-size-xs * 4, 3);
}
.avatar-sm.avatar-4by3 {
width: math.div($avatar-size-sm * 4, 3);
}
.avatar-lg.avatar-4by3 {
width: math.div($avatar-size-lg * 4, 3);
}
.avatar-xl.avatar-4by3 {
width: math.div($avatar-size-xl * 4, 3);
}
.avatar-xxl.avatar-4by3 {
width: math.div($avatar-size-xxl * 4, 3);
}
// Group
.avatar-group {
display: inline-flex;
// Shift every next avatar left
.avatar + .avatar {
margin-left: math.div(-$avatar-size-base, 4);
}
.avatar-xs + .avatar-xs {
margin-left: math.div(-$avatar-size-xs, 4);
}
.avatar-sm + .avatar-sm {
margin-left: math.div(-$avatar-size-sm, 4);
}
.avatar-lg + .avatar-lg {
margin-left: math.div(-$avatar-size-lg, 4);
}
.avatar-xl + .avatar-xl {
margin-left: math.div(-$avatar-size-xl, 4);
}
.avatar-xxl + .avatar-xxl {
margin-left: math.div(-$avatar-size-xxl, 4);
}
// Add some spacing between avatars
.avatar:not(:last-child) {
mask-image: url(#{$path-to-img}/masks/avatar-group.svg);
mask-size: 100% 100%;
}
// Bring an avatar to front on hover
.avatar:hover {
mask-image: none;
z-index: 1;
+ .avatar {
mask-image: url(#{$path-to-img}/masks/avatar-group-hover.svg);
mask-size: 100% 100%;
&:last-child {
mask-image: url(#{$path-to-img}/masks/avatar-group-hover-last.svg);
}
}
}
}