/* Real brand logos as inline SVG. currentColor for monochrome marks,
   true brand fills for full-color marks. Pass `mono` to force currentColor. */

const Logo = ({ size = 24, children, viewBox = '0 0 24 24', ...rest }) => (
  <svg xmlns="http://www.w3.org/2000/svg" width={size} height={size} viewBox={viewBox} fill="none" {...rest}>
    {children}
  </svg>
);

const B = {
  // ── AI & Automation ──────────────────────────────────────────
  // OpenAI mark (Machine Learning)
  OpenAI: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path
        fill={mono ? 'currentColor' : '#10A37F'}
        d="M22.28 9.82a5.93 5.93 0 0 0-.51-4.87 6 6 0 0 0-6.46-2.87A6 6 0 0 0 4.98 4.18a5.93 5.93 0 0 0-3.96 2.87 6 6 0 0 0 .74 7.04 5.93 5.93 0 0 0 .51 4.87 6 6 0 0 0 6.46 2.87 5.97 5.97 0 0 0 4.51 2.02 6 6 0 0 0 5.71-4.13 5.93 5.93 0 0 0 3.96-2.87 6 6 0 0 0-.63-6.03Zm-9.05 12.65a4.45 4.45 0 0 1-2.85-1.03l.14-.08 4.74-2.74a.77.77 0 0 0 .39-.67v-6.69l2 1.16a.07.07 0 0 1 .04.05v5.54a4.46 4.46 0 0 1-4.46 4.46Zm-9.59-4.1a4.43 4.43 0 0 1-.53-2.98l.14.08 4.74 2.74a.77.77 0 0 0 .77 0l5.79-3.34v2.31a.07.07 0 0 1-.03.06l-4.79 2.77a4.46 4.46 0 0 1-6.09-1.64ZM2.39 8.94a4.45 4.45 0 0 1 2.33-1.96v5.64a.77.77 0 0 0 .39.67l5.78 3.33-2 1.16a.07.07 0 0 1-.07 0l-4.79-2.77a4.46 4.46 0 0 1-1.64-6.07Zm16.46 3.83-5.79-3.34 2-1.15a.07.07 0 0 1 .07 0l4.79 2.76a4.46 4.46 0 0 1-.67 8.05V13.45a.77.77 0 0 0-.4-.68Zm1.99-3-.14-.08-4.74-2.74a.77.77 0 0 0-.77 0l-5.79 3.34V7.97a.07.07 0 0 1 .03-.06l4.79-2.77a4.46 4.46 0 0 1 6.62 4.62Zm-12.55 4.13-2-1.16a.07.07 0 0 1-.04-.05V7.15a4.46 4.46 0 0 1 7.32-3.43l-.14.08-4.74 2.74a.77.77 0 0 0-.39.67Zm1.09-2.34 2.58-1.49 2.58 1.49v2.97l-2.58 1.49-2.58-1.49Z"
      />
    </Logo>
  ),
  // Zapier-ish stylized cog (Workflow Automation)
  Zapier: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path
        fill={mono ? 'currentColor' : '#FF4F00'}
        d="M14.45 12 21 13.07a9.06 9.06 0 0 1 0 -2.14L14.45 12 21 10.93a9.06 9.06 0 0 0-.61-2.4l-6.09 2.6 4.39-4.92a9.06 9.06 0 0 0-1.51-1.51l-4.92 4.39 2.6-6.09a9.06 9.06 0 0 0-2.4-.61L13.07 9 12 2.45a9.06 9.06 0 0 0-2.14 0L10.93 9 8.33 2.91a9.06 9.06 0 0 0-2.4.61l2.6 6.09L3.6 4.6a9.06 9.06 0 0 0-1.51 1.51l4.39 4.92-6.09-2.6Z"
      />
    </Logo>
  ),
  // LangChain parrot-link (AI Agents) — abstract mark
  LangChain: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path
        fill={mono ? 'currentColor' : '#1C3C3C'}
        d="M9.5 4a3.5 3.5 0 0 0-3.5 3.5v3a3.5 3.5 0 0 0 3.5 3.5h1v-2h-1a1.5 1.5 0 0 1-1.5-1.5v-3A1.5 1.5 0 0 1 9.5 6H13V4Zm5 4h-1v2h1a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5H11v2h3.5a3.5 3.5 0 0 0 3.5-3.5v-3a3.5 3.5 0 0 0-3.5-3.5Z"
      />
    </Logo>
  ),
  // Puppeteer-like spider (Web Scraping)
  Puppeteer: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <g fill={mono ? 'currentColor' : '#40B5A4'}>
        <circle cx="12" cy="12" r="3.5" />
        <path d="M12 7.5V4M12 16.5V20M7.5 12H4M16.5 12H20M8.8 8.8 6 6M15.2 15.2 18 18M8.8 15.2 6 18M15.2 8.8 18 6" stroke={mono ? 'currentColor' : '#40B5A4'} strokeWidth="1.6" strokeLinecap="round" fill="none" />
      </g>
    </Logo>
  ),

  // ── Development ──────────────────────────────────────────────
  // Node.js
  NodeJS: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path
        fill={mono ? 'currentColor' : '#5FA04E'}
        d="M11.999 24a2.25 2.25 0 0 1-1.124-.301l-3.572-2.113c-.534-.298-.273-.404-.097-.465.711-.247.856-.305 1.615-.735.08-.046.184-.028.266.021l2.745 1.628a.353.353 0 0 0 .332 0l10.703-6.179a.337.337 0 0 0 .163-.292V3.388a.345.345 0 0 0-.166-.297L11.999 0a.331.331 0 0 0-.331 0L.965 6.179a.343.343 0 0 0-.169.297v12.176c0 .121.069.232.171.291l2.93 1.692c1.59.795 2.563-.142 2.563-1.082V7.526c0-.171.139-.31.31-.31h1.357c.169 0 .31.139.31.31v12.027c0 2.121-1.155 3.339-3.166 3.339-.619 0-1.107 0-2.466-.671L.385 20.6A2.25 2.25 0 0 1 0 19.488V3.512C0 2.604.484 1.756 1.27 1.301L11.668-.301a2.25 2.25 0 0 1 2.249 0L24.296 1.301c.787.455 1.27 1.303 1.27 2.211v15.976c0 .908-.484 1.752-1.27 2.212l-10.376 6.001A2.25 2.25 0 0 1 11.999 24Zm3.302-7.464c-4.554 0-5.508-2.092-5.508-3.846 0-.171.139-.31.311-.31h1.385c.153 0 .283.111.305.262.211 1.418.838 2.135 3.507 2.135 2.123 0 3.026-.481 3.026-1.611 0-.652-.258-1.135-3.555-1.46-2.755-.273-4.46-.881-4.46-3.083 0-2.029 1.711-3.235 4.582-3.235 3.225 0 4.823 1.119 5.026 3.529.009.085-.022.168-.083.232a.31.31 0 0 1-.224.097h-1.395a.305.305 0 0 1-.298-.244c-.314-1.49-1.131-1.965-2.625-1.965-1.879 0-2.097.654-2.097 1.144 0 .593.258.766 3.397 1.181 3.107.412 4.612.992 4.612 3.166 0 2.187-1.823 3.444-5.005 3.444Z"
      />
    </Logo>
  ),
  // React
  ReactLogo: ({ size = 24, mono, ...p }) => {
    const c = mono ? 'currentColor' : '#61DAFB';
    return (
      <Logo size={size} viewBox="0 0 24 24" {...p}>
        <circle cx="12" cy="12" r="2" fill={c} />
        <g fill="none" stroke={c} strokeWidth="1">
          <ellipse cx="12" cy="12" rx="10" ry="4" />
          <ellipse cx="12" cy="12" rx="10" ry="4" transform="rotate(60 12 12)" />
          <ellipse cx="12" cy="12" rx="10" ry="4" transform="rotate(120 12 12)" />
        </g>
      </Logo>
    );
  },
  // Apple (Mobile Apps — iOS proxy)
  Apple: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path
        fill={mono ? 'currentColor' : '#A2AAAD'}
        d="M17.05 12.54c-.03-2.85 2.33-4.22 2.43-4.28-1.32-1.94-3.39-2.2-4.12-2.23-1.75-.18-3.42 1.04-4.31 1.04-.9 0-2.27-1.02-3.74-.99-1.92.03-3.7 1.12-4.69 2.83-2.01 3.49-.51 8.65 1.43 11.49.95 1.39 2.07 2.95 3.54 2.9 1.43-.06 1.97-.92 3.7-.92 1.71 0 2.21.92 3.72.89 1.54-.03 2.51-1.41 3.45-2.81 1.09-1.61 1.54-3.18 1.56-3.26-.04-.01-2.99-1.15-3.02-4.56Zm-2.83-8.4c.79-.96 1.32-2.29 1.18-3.62-1.14.05-2.52.76-3.34 1.71-.73.85-1.37 2.21-1.2 3.51 1.27.1 2.57-.65 3.36-1.6Z"
      />
    </Logo>
  ),
  // TypeScript
  TypeScript: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <rect width="24" height="24" rx="3" fill={mono ? 'transparent' : '#3178C6'} stroke={mono ? 'currentColor' : 'none'} strokeWidth="1.5" />
      <path
        fill={mono ? 'currentColor' : '#fff'}
        d="M9.6 13h7.2v-1.45H10.95v-.05h5.6v-1.45h-7.2v2.95Zm-3.05-2.95v1.45h2.05V18h1.65v-6.5h2.05v-1.45H6.55Z"
      />
      <path
        fill={mono ? 'currentColor' : '#fff'}
        d="M19.2 13.45c-.6-.27-1.32-.4-2.16-.4-.96 0-1.7.21-2.22.62-.52.41-.78.97-.78 1.69 0 .57.16 1.05.49 1.43.32.39.84.68 1.55.89.67.19 1.12.36 1.34.5.22.14.33.32.33.55 0 .25-.1.45-.31.59-.21.14-.51.21-.92.21-.61 0-1.18-.13-1.71-.39v1.55c.55.21 1.21.32 1.97.32 1.04 0 1.83-.21 2.36-.63.53-.42.8-1.01.8-1.78 0-.55-.16-1.01-.47-1.39-.31-.38-.83-.69-1.56-.93-.65-.21-1.07-.36-1.27-.46-.2-.1-.3-.27-.3-.49 0-.21.09-.39.28-.53.19-.14.46-.21.81-.21.55 0 1.05.13 1.5.4v-1.54Z"
      />
    </Logo>
  ),

  // ── Infrastructure ──────────────────────────────────────────
  // Vercel
  Vercel: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path d="M12 3 23 21H1L12 3Z" fill={mono ? 'currentColor' : '#000'} stroke={mono ? 'none' : '#fff'} strokeWidth="0" />
    </Logo>
  ),
  // DigitalOcean
  DigitalOcean: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path
        fill={mono ? 'currentColor' : '#0080FF'}
        d="M12 2C6.5 2 2 6.5 2 12h4.7c0-3 2.4-5.3 5.3-5.3S17.3 9 17.3 12 15 17.3 12 17.3v4.7c5.5 0 10-4.5 10-10S17.5 2 12 2Zm0 18.7v-3.3H8.7v3.3H12Zm-3.3-3.3v-2.7H6v2.7h2.7Zm-2.7-2.7v-2.3H4v2.3h2Z"
      />
    </Logo>
  ),
  // Cloudflare
  Cloudflare: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path
        fill={mono ? 'currentColor' : '#F38020'}
        d="M16.97 13.95 14.4 13.4l-.45-.18a.27.27 0 0 1-.13-.34c.04-.09.13-.16.23-.18l2.6-.55a3.2 3.2 0 0 0-.27-3.43 3.36 3.36 0 0 0-3.84-1.07A4.78 4.78 0 0 0 9 6a4.84 4.84 0 0 0-4.7 3.66 2.4 2.4 0 0 0-2.31 2.6.21.21 0 0 0 .2.2l13.69.02a.27.27 0 0 0 .26-.2l.16-.6c.07-.27-.04-.55-.27-.66l-2.07-.45.27-.95a3.36 3.36 0 0 1 2.57-2.6c.31.92.18 1.92-.36 2.7l2.43.55c.22.05.4.21.46.43.08.27-.05.55-.29.66Zm3.93-1.5c-.04 0-.07 0-.11.02l-.59.18c-.13.04-.22.16-.22.29l.18 4.84a.32.32 0 0 0 .31.31h2a.32.32 0 0 0 .31-.31l.4-3.94v-.05c0-.7-.49-1.3-1.18-1.36a.5.5 0 0 0-.1.02h-1Z"
      />
    </Logo>
  ),
  // Postgres (SQL/NoSQL)
  Postgres: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path
        fill={mono ? 'currentColor' : '#336791'}
        d="M21.5 13.5c-.4-.5-1.2-.6-2.4-.4-.4.1-.8.2-1.2.3.5-1.5.8-3.4.4-5-.6-2.4-2-3.7-4.1-3.8-1 0-1.9.2-2.4.5-.7-.5-1.7-.7-3-.6-.6 0-1.2.2-1.7.5-1-.4-3.7-1.4-4.9.7-.8 1.4-.8 4 0 8.1.5 2.6 1.6 4.5 2.9 4.9.5.2.9.2 1.4-.1.5-.4 1.2-1.2 1.9-2.2.4.5.9.6 1.3.6.3 0 .6-.1.8-.1.1.5.4.9.9 1.1 1.4.4 3.2.2 4.4-.5.9-.5 1.6-1.4 2.1-2.6.3-.7.6-1.4.8-1.9.5-.1 1.2-.2 1.8-.4.6-.2 1-.4 1.1-.7.1-.2.1-.5-.1-.8Zm-13.7-2c.1.4.1.7.2 1 0 .1.1.2.1.3-.1.5-.7 2.7-2.4 3.5-.4.2-.7.2-1 .1-.7-.3-1.5-1.7-2-3.7-.7-3.5-.7-5.5-.1-6.4.5-.9 2.4-.4 3.6 0-.1.2-.3.4-.4.6-.6.8-.6 2 .1 3.6.2.4.4.6.7.8-.4.6-.8 1.4-.8 2.2Zm2 1.5c-.5.1-.8.1-1.1-.4-.7-1-.5-2.7.4-4.4.2-.4.5-.7.6-.8 0 .2.1.4.1.5.5 1.3.7 2.6.7 3.7v.3c-.2.5-.4.9-.7 1.1Zm9.3 4c-.3.7-.7 1.3-1.2 1.7-1 .8-2.5.9-3.6.6-.6-.2-.4-1.1-.4-1.5-.1-.5-.4-1.4-.6-1.9.1 0 .1 0 0 0 .8-.7 1.1-1.5 1-2.5-.2-1.4-1-2.5-2.1-2.6-.7-.1-1.4.1-1.6.4-.4-.6-.7-1.2-.6-1.8.1-.5.6-.7 1.7-.7 2 0 3.3.6 3.9 1.7.3.5.6 1.5.5 2.6-.1 1-.4 2-.7 3v.5c-.1.4 0 .8.1 1l3.2-1.4c.1.4 0 .6-.1.9Z"
      />
    </Logo>
  ),

  Boxes: ({ size = 24, mono, ...p }) => (
    <Logo size={size} viewBox="0 0 24 24" {...p}>
      <path d="M3 7l4.5-2.5L12 7v5l-4.5 2.5L3 12V7ZM12 7l4.5-2.5L21 7v5l-4.5 2.5L12 12V7Z" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinejoin="round" strokeLinecap="round" />
    </Logo>
  ),
};

window.B = B;
