2023-06-23 12:20:49 +00:00
|
|
|
import { Avatar, AvatarFallback } from '@documenso/ui/primitives/avatar';
|
|
|
|
|
|
|
|
|
|
export type StackAvatarProps = {
|
|
|
|
|
first?: boolean;
|
|
|
|
|
zIndex?: string;
|
|
|
|
|
fallbackText?: string;
|
|
|
|
|
type: 'unsigned' | 'waiting' | 'completed';
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const StackAvatar = ({ first, zIndex, fallbackText, type }: StackAvatarProps) => {
|
|
|
|
|
let classes = '';
|
2023-06-30 23:38:37 +00:00
|
|
|
let zIndexClass = '';
|
|
|
|
|
const firstClass = first ? '' : '-ml-3';
|
|
|
|
|
|
2023-06-23 12:20:49 +00:00
|
|
|
switch (type) {
|
|
|
|
|
case 'unsigned':
|
2023-06-23 20:19:25 +00:00
|
|
|
classes = 'bg-dawn-200 text-dawn-900';
|
2023-06-23 12:20:49 +00:00
|
|
|
break;
|
|
|
|
|
case 'waiting':
|
|
|
|
|
classes = 'bg-water text-water-700';
|
|
|
|
|
break;
|
|
|
|
|
case 'completed':
|
|
|
|
|
classes = 'bg-documenso-200 text-documenso-800';
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
2023-06-30 23:38:37 +00:00
|
|
|
switch (zIndex) {
|
|
|
|
|
case '10':
|
|
|
|
|
zIndexClass = 'z-10';
|
|
|
|
|
break;
|
|
|
|
|
case '20':
|
|
|
|
|
zIndexClass = 'z-20';
|
|
|
|
|
break;
|
|
|
|
|
case '30':
|
|
|
|
|
zIndexClass = 'z-30';
|
|
|
|
|
break;
|
|
|
|
|
case '40':
|
|
|
|
|
zIndexClass = 'z-40';
|
|
|
|
|
break;
|
|
|
|
|
case '50':
|
|
|
|
|
zIndexClass = 'z-50';
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
2023-06-23 12:20:49 +00:00
|
|
|
return (
|
|
|
|
|
<Avatar
|
|
|
|
|
className={`
|
2023-06-30 23:38:37 +00:00
|
|
|
${zIndexClass}
|
|
|
|
|
${firstClass}
|
|
|
|
|
h-10 w-10 border-2 border-solid border-white`}
|
2023-06-23 12:20:49 +00:00
|
|
|
>
|
|
|
|
|
<AvatarFallback className={classes}>{fallbackText ?? 'UK'}</AvatarFallback>
|
|
|
|
|
</Avatar>
|
|
|
|
|
);
|
|
|
|
|
};
|