import { cn, Tooltip, TooltipContent, TooltipTrigger } from 'ui' import { PARTNER_TO_NAME } from './PartnerManagedResource' import { MANAGED_BY } from '@/lib/constants/infrastructure' import type { Organization } from '@/types' interface PartnerIconProps { organization: Pick showTooltip?: boolean tooltipText?: string size?: 'small' | 'medium' | 'large' } export function getDefaultPartnerTooltipText( managedBy: Pick['managed_by'] ) { switch (managedBy) { case MANAGED_BY.VERCEL_MARKETPLACE: return 'Managed via Vercel Marketplace' case MANAGED_BY.AWS_MARKETPLACE: return 'Billed via AWS Marketplace' case MANAGED_BY.STRIPE_PROJECTS: return 'Connected to Stripe' default: return `Managed by ${PARTNER_TO_NAME[managedBy]}` } } export function getPartnerTooltipText({ managedBy, tooltipText, }: { managedBy: Pick['managed_by'] tooltipText?: string }) { return tooltipText ?? getDefaultPartnerTooltipText(managedBy) } function getPartnerIcon( organization: Pick, size: 'small' | 'medium' | 'large' ) { switch (organization.managed_by) { case MANAGED_BY.VERCEL_MARKETPLACE: return ( ) case MANAGED_BY.AWS_MARKETPLACE: return ( ) case MANAGED_BY.STRIPE_PROJECTS: return ( ) default: return null } } function PartnerIcon({ organization, showTooltip = true, tooltipText, size = 'small', }: PartnerIconProps) { if ( organization.managed_by === MANAGED_BY.VERCEL_MARKETPLACE || organization.managed_by === MANAGED_BY.AWS_MARKETPLACE || organization.managed_by === MANAGED_BY.STRIPE_PROJECTS ) { const icon = getPartnerIcon(organization, size) if (!showTooltip) { return (
{icon}
) } const defaultTooltipText = getPartnerTooltipText({ managedBy: organization.managed_by, tooltipText, }) return (
{icon}
{defaultTooltipText}
) } return null } export default PartnerIcon