Adopt logistics visual system across webapp
This commit is contained in:
23
app/utils/profileAvatars.ts
Normal file
23
app/utils/profileAvatars.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
const DICEBEAR_STYLE = 'notionists'
|
||||
const DICEBEAR_BACKGROUNDS = ['f6efe3', 'e7f4ee', 'eef2ff', 'fff1dc', 'fce7f3']
|
||||
|
||||
function hashProfileAvatarValue(value: string) {
|
||||
return [...value].reduce((acc, char) => {
|
||||
return (acc * 33 + char.charCodeAt(0)) >>> 0
|
||||
}, 5381)
|
||||
}
|
||||
|
||||
export function profileAvatarSeedFromValue(value?: string | null) {
|
||||
const normalized = String(value || 'profile').trim() || 'profile'
|
||||
return `gl-${hashProfileAvatarValue(normalized).toString(36)}`
|
||||
}
|
||||
|
||||
export function profileAvatarUrl(seed?: string | null) {
|
||||
const params = new URLSearchParams({
|
||||
seed: String(seed || 'profile').trim() || 'profile',
|
||||
radius: '32',
|
||||
backgroundColor: DICEBEAR_BACKGROUNDS.join(','),
|
||||
})
|
||||
|
||||
return `https://api.dicebear.com/9.x/${DICEBEAR_STYLE}/svg?${params.toString()}`
|
||||
}
|
||||
Reference in New Issue
Block a user