// Connector brand marks, hand-drawn as tiny inline SVGs (no external assets, works // offline). Deliberately simplified geometry — recognizable at 14–20px, not exact // reproductions. Brand colors are hardcoded (they don't theme); the Notion and GitHub // tiles use currentColor so they stay legible in dark mode. Unknown connectors fall // back to the neutral plug glyph so new descriptors degrade gracefully. import { Icon } from "./Icon"; const ALIAS: Record = { gcal: "google_calendar", gdrive: "google_drive", msteams: "teams", }; function Gmail({ s }: { s: number }) { return ( ); } function GoogleCalendar({ s }: { s: number }) { return ( ); } function GoogleDrive({ s }: { s: number }) { return ( ); } function Slack({ s }: { s: number }) { // The lattice, reduced to its four comma-shapes (pill + dot per color). return ( ); } function Notion({ s }: { s: number }) { return ( ); } function HubSpot({ s }: { s: number }) { return ( ); } function Outlook({ s }: { s: number }) { return ( ); } function PagerDuty({ s }: { s: number }) { return ( ); } function GitHub({ s }: { s: number }) { return ( ); } function Telegram({ s }: { s: number }) { return ( ); } const MARKS: Record JSX.Element> = { gmail: Gmail, google_calendar: GoogleCalendar, google_drive: GoogleDrive, slack: Slack, notion: Notion, hubspot: HubSpot, outlook: Outlook, teams: Outlook, pagerduty: PagerDuty, github: GitHub, telegram: Telegram, }; export function hasBrandIcon(name: string): boolean { return (ALIAS[name] || name) in MARKS; } /** A connector's brand mark; unrecognized connectors get the neutral plug glyph. */ export function BrandIcon({ name, size = 15 }: { name: string; size?: number }) { const Mark = MARKS[ALIAS[name] || name]; if (!Mark) return ; return ; }