 6ab741b927
			
		
	
	
		6ab741b927
		
			
		
	
	
	
	
		
			
			* Heavy WIP * More WIP * Playing with backwards compat * Moar wip * wip * Email changes for group feature * Committing in redundant migrations for reference * Combine all WIP migrations into a single feature migration * Make backup of current version of radio area pending refactor * Improved accessibility through keyboard * Cleanup in seperate commit so I can cherrypick later * Added RadioArea component * wip * Ignore .yarn file * Kinda stable * Getting closer... * Hide header when there are only personal events * Added uid to event create, updated EventTypeDescription * Delete redundant migration * Committing new team related migrations * Optimising & implemented backwards compatibility * Removed now redundant pages * Undid prototyping to calendarClient I did not end up using * Properly typed Select & fixed lint throughout * How'd that get here, removed. * TODO: investigate why userData is not compatible with passed type * This likely matches the event type that is created for a user * Few bugfixes * Adding datepicker optimisations * Fixed new event type spacing, initial profile should always be there * Gave NEXT_PUBLIC_BASE_URL a try but I think it's not the right solution * Updated EventTypeDescription to account for long titles, added logo to team page. * Added logo to team query * Added cancel Cypress test because an upcoming merge contains changes * Fix for when the event type description is long * Turned Theme into the useTheme hook, and made it fully compatible with teams pages * Built AvatarGroup ui component + moved Avatar to ui * Give the avatar some space fom the description * Fixed timeZone selector * Disabled tooltip +1-... Co-authored-by: Bailey Pumfleet <pumfleet@hey.com>
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import * as AvatarPrimitive from "@radix-ui/react-avatar";
 | |
| import * as Tooltip from "@radix-ui/react-tooltip";
 | |
| import { defaultAvatarSrc } from "@lib/profile";
 | |
| import classNames from "@lib/classNames";
 | |
| 
 | |
| export type AvatarProps = {
 | |
|   className?: string;
 | |
|   size: number;
 | |
|   imageSrc?: string;
 | |
|   title?: string;
 | |
|   alt: string;
 | |
|   gravatarFallbackMd5?: string;
 | |
| };
 | |
| 
 | |
| export default function Avatar({ imageSrc, gravatarFallbackMd5, size, alt, title, ...props }: AvatarProps) {
 | |
|   const className = classNames(
 | |
|     "border-2 border-gray-300 rounded-full",
 | |
|     props.className,
 | |
|     `h-${size} w-${size}`
 | |
|   );
 | |
|   const avatar = (
 | |
|     <AvatarPrimitive.Root>
 | |
|       <AvatarPrimitive.Image
 | |
|         src={imageSrc}
 | |
|         alt={alt}
 | |
|         className={classNames("border-2 border-gray-300 rounded-full", `h-auto w-${size}`, props.className)}
 | |
|       />
 | |
|       <AvatarPrimitive.Fallback delayMs={600}>
 | |
|         {gravatarFallbackMd5 && (
 | |
|           <img src={defaultAvatarSrc({ md5: gravatarFallbackMd5 })} alt={alt} className={className} />
 | |
|         )}
 | |
|       </AvatarPrimitive.Fallback>
 | |
|     </AvatarPrimitive.Root>
 | |
|   );
 | |
| 
 | |
|   return title ? (
 | |
|     <Tooltip.Tooltip delayDuration="300">
 | |
|       <Tooltip.TooltipTrigger className="cursor-default">{avatar}</Tooltip.TooltipTrigger>
 | |
|       <Tooltip.Content className="p-2 rounded-sm text-sm bg-black text-white shadow-sm">
 | |
|         <Tooltip.Arrow />
 | |
|         {title}
 | |
|       </Tooltip.Content>
 | |
|     </Tooltip.Tooltip>
 | |
|   ) : (
 | |
|     <>{avatar}</>
 | |
|   );
 | |
| }
 |