Avatar is a JavaScript library & React component for showing Gravatars or generating user avatars.
Examples
There are several examples on the website.
import Avatar from 'avatar-initials';
const Avatar = require('avatar-initials');
const avatar = Avatar.from(document.getElementById('avatar'), {
'useGravatar': false,
'initials': 'MC',
});
const github_avatar_url = Avatar.githubAvatar({
id: '12345'
});
const gravatar_url_from_email = Avatar.gravatarUrl({
email: 'test@test.test'
});
const gravatar_url_from_hash = Avatar.gravatarUrl({
hash: '12929016fffb0b3af98bc440acf0bfe2'
});
const initial_png = Avatar.initialAvatar({
initials: 'MC',
initial_fg: '#888888',
initial_bg: '#f4f6f7',
initial_size: 0,
initial_weight: 100,
initial_font_family: "'Lato', 'Lato-Regular', 'Helvetica Neue'",
});
This example will render an avatar with my initials "MC" as the image.
A simple React example:
import { AvatarComponent } from 'avatar-initials';
export default function Example() {
return (
<div className={`w-full flex self-center items-center justify-between relative ${classes}`}>
<button type="button" onClick={() => setShowMenu(true)} title="Open Menu">
<AvatarComponent
classes="rounded-full"
useGravatar={false}
size={44}
primarySource={currentUser.Avatar}
color="#000000"
background="#f1f1f1"
fontSize={16}
fontWeight={400}
offsetY={24}
initials={`${currentUser.FirstName[0]}${currentUser.LastName[0]}`}
/>
</button>
</div>
);
}
Options
Avatar is highly customizable and most options are self explanatory:
{
primarySource: '',
fallbackImage: '',
size: 80,
setSourceCallback: () => {},
initials: '',
color: '#888888',
background: '#f4f6f7',
fontSize: 0,
fontWeight: 100,
fontFamily: "'Lato', 'Lato-Regular', 'Helvetica Neue'",
offsetX: undefined,
offsetY: undefined,
width: undefined,
height: undefined,
useGravatar: true,
useGravatarFallback: false,
hash: '',
email: '',
fallback: 'mm',
rating: 'x',
forcedefault: false,
githubId: null,
}
Installation
npm install --save avatar-initials
or copy the minified build from browser/
<script src="browser/avatar.js"></script>
The browser build is built with the following @babel/preset-env
targets:
{
"android": "109",
"chrome": "109",
"edge": "109",
"firefox": "109",
"ios": "16.2",
"opera": "92",
"safari": "16.2",
"samsung": "19"
}
jQuery Wrapper for Avatar
if (typeof jQuery !== 'undefined') {
jQuery.fn.avatar = function avatar(options) {
return this.each(() => {
if (!jQuery.data(this, 'plugin_avatar')) {
jQuery.data(this, 'plugin_avatar', new Avatar(this, options));
}
});
};
}
Migrating to v6
The settings have changed keys and some new logic was introduced, the logic should not interefere but the keys will need to be updated:
initial_fg => color
initial_bg => background
initial_size => fontSize
initial_weight => fontWeight
initial_font_family => fontFamily
allowGravatarFallback => useGravatarFallback
github_id => github_id
Thanks
Pretty styles and design support kindly provided by Andrew Crocker.
Sun Knudsen for providing a PR with setSourceCallback
.
License
Avatar is MIT licensed.