Skip to content

User Avatar

Implement displaying user avatar in your frontend that offers "sign in with Sonolus" feature.

Obtain Avatar

User avatar can be obtained from ServiceUserProfile during server, multiplayer, or external authentication. User avatar display can be implemented based on the following properties:

ts
type ServiceUserProfile = {
    // ...
    avatarType: string
    avatarForegroundType: string
    avatarForegroundColor: string
    avatarBackgroundType: string
    avatarBackgroundColor: string
    // ...
}

The following sections describes different types of avatar to implement, as well as an example implementation in HTML and CSS.

Themed Avatar

When avatarType starts with theme-, user has a themed avatar.

It should be implemented as:

  • A layer with image https://content.sonolus.com/avatar/{avatarType}.
HTML
<div class="themed-avatar"></div>
CSS
.themed-avatar {
    background-image: url(https://content.sonolus.com/avatar/theme-000001);
    background-size: 100% 100%;
}

Default Avatar with Themed Background

When avatarType is default and avatarBackgroundType starts with theme-, user has a default avatar with themed background.

It should be implemented as:

  • A background layer with image https://content.sonolus.com/avatar/background/{avatarBackgroundType}.
  • A foreground layer with image https://content.sonolus.com/avatar/foreground/{avatarForegroundType}, color multiplied with avatarForegroundColor, scaled to 50% in size and centered.
HTML
<div class="themed-avatar-background">
    <div class="avatar-foreground"></div>
</div>
CSS
.themed-avatar-background {
    background-image: url(https://content.sonolus.com/avatar/background/theme-000001);
    background-size: 100% 100%;
}

.avatar-foreground {
    width: 100%;
    height: 100%;
    background-color: #ffff00;
    mask-image: url(https://content.sonolus.com/avatar/foreground/player);
    mask-size: 50% 50%;
    mask-position: 50% 50%;
    mask-repeat: no-repeat;
}

Default Avatar with Default Background

When avatarType is default and avatarBackgroundType is default, user has a default avatar with default background.

It should be implemented as:

  • A background layer with image https://content.sonolus.com/avatar/background/default, and color multiplied with avatarBackgroundColor
  • A foreground layer with image https://content.sonolus.com/avatar/foreground/{avatarForegroundType}, color multiplied with avatarForegroundColor, and scaled to 50% in size and centered.
HTML
<div class="avatar-background">
    <div class="avatar-foreground"></div>
</div>
CSS
.avatar-background {
    background-color: #00ffff;
    mask-image: url(https://content.sonolus.com/avatar/background/default);
    mask-size: 100% 100%;
}

.avatar-foreground {
    width: 100%;
    height: 100%;
    background-color: #ffff00;
    mask-image: url(https://content.sonolus.com/avatar/foreground/player);
    mask-size: 50% 50%;
    mask-position: 50% 50%;
    mask-repeat: no-repeat;
}