Profile Picture UI
React
Using Profile Picture components in React
Installation
npm install @grasco/profile-pictureImport
import { ProfilePicture, ProfilePictureGroup, setCdnBaseUrl } from '@grasco/profile-picture';Full Example
import { ProfilePicture, ProfilePictureGroup, setCdnBaseUrl } from '@grasco/profile-picture';
import { useEffect } from 'react';
export function UserAvatar() {
useEffect(() => {
setCdnBaseUrl('https://api.grasco.dev');
}, []);
return (
<ProfilePicture
extCustomerId="demo-user-1769431807927-pd9dtmn1"
alt="Kerry Nicholson"
size="xl"
variant="circle"
border
borderColor="white"
shadow="md"
presence={{ status: 'online', animate: true }}
badge={{ content: 3, position: 'top-right', bgColor: '#ef4444' }}
interactive={{ hoverable: true, pressable: true }}
onClick={(detail) => console.log('Clicked:', detail)}
/>
);
}
export function TeamMembers({ users }) {
return (
<ProfilePictureGroup
max={4}
size="lg"
showAddButton
onAvatarClick={(user) => console.log('User:', user.name)}
onAddClick={() => console.log('Add member')}
>
{users.map(user => (
<ProfilePicture
key={user.id}
src={user.avatar}
alt={user.name}
data-user-id={user.id}
data-status={user.status}
/>
))}
</ProfilePictureGroup>
);
}TypeScript
import type { Size, Variant, PresenceStatus, BadgeConfig } from '@grasco/profile-picture';Additional Props
React wrapper adds:
| Prop | Type | Description |
|---|---|---|
className | string | CSS class name |
style | React.CSSProperties | Inline styles |