// // 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); } } } }