| 1 | import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; |
| 2 | import { cn } from "@/lib/utils"; |
| 3 | import { sourceHue, sourceInitials } from "@/lib/utils"; |
| 4 | |
| 5 | const NAMES: Record<string, string> = { |
| 6 | ticketmaster: "Ticketmaster", |
| 7 | seatgeek: "SeatGeek", |
| 8 | axs: "AXS", |
| 9 | stubhub: "StubHub", |
| 10 | vividseats: "Vivid Seats", |
| 11 | fifa: "FIFA", |
| 12 | seetickets: "See Tickets", |
| 13 | }; |
| 14 | |
| 15 | export function SourceChip({ id, size = 24, className }: { id: string; size?: number; className?: string }) { |
| 16 | const name = NAMES[id] ?? id; |
| 17 | const hue = sourceHue(id); |
| 18 | return ( |
| 19 | <Tooltip> |
| 20 | <TooltipTrigger asChild> |
| 21 | <span |
| 22 | className={cn( |
| 23 | "inline-flex shrink-0 items-center justify-center rounded-[var(--radius-sm)] font-mono font-semibold", |
| 24 | className, |
| 25 | )} |
| 26 | style={{ |
| 27 | width: size, |
| 28 | height: size, |
| 29 | fontSize: size * 0.42, |
| 30 | color: `oklch(0.82 0.12 ${hue})`, |
| 31 | backgroundColor: `oklch(0.82 0.12 ${hue} / 0.14)`, |
| 32 | border: `1px solid oklch(0.82 0.12 ${hue} / 0.28)`, |
| 33 | }} |
| 34 | aria-label={name} |
| 35 | > |
| 36 | {sourceInitials(name)} |
| 37 | </span> |
| 38 | </TooltipTrigger> |
| 39 | <TooltipContent>{name}</TooltipContent> |
| 40 | </Tooltip> |
| 41 | ); |
| 42 | } |