'use client';
import Link from 'next/link';
import Image from 'next/image';
import {
ArrowUpRight,
Code2,
Heart,
Terminal,
Copy,
Check,
} from 'lucide-react';
import { useState, type ReactNode, type MouseEvent } from 'react';
import { SectionHeading } from './home-features';
// Some provider logos ship a dedicated `-dark` variant (white-on-dark
// or stroke-inverted). Use those in dark mode instead of inverting the
// light SVG via CSS — `dark:invert` mangles full-colour logos
// (Google's primary palette, LlamaIndex's gradient, CrewAI's brand).
const PROVIDERS: { name: string; logo: string; logoDark?: string }[] = [
{
name: 'Anthropic',
logo: '/images/providers/anthropic-logo.svg',
logoDark: '/images/providers/anthropic-logo-dark.svg',
},
{
name: 'OpenAI',
logo: '/images/providers/openai-logo.svg',
logoDark: '/images/providers/openai-logo-dark.svg',
},
{
name: 'Vercel AI',
logo: '/images/providers/vercel-logo.svg',
logoDark: '/images/providers/vercel-logo-dark.svg',
},
{ name: 'Google', logo: '/images/providers/google-logo.svg' },
{
name: 'LangChain',
logo: '/images/providers/langchain-logo.svg',
logoDark: '/images/providers/langchain-logo-dark.svg',
},
{ name: 'CrewAI', logo: '/images/providers/crewai-logo.svg' },
{ name: 'LlamaIndex', logo: '/images/providers/llamaIndex-logo.svg' },
{
name: 'Mastra',
logo: '/images/providers/mastra-logo.svg',
logoDark: '/images/providers/mastra-logo-dark.svg',
},
];
const CLIENTS: { name: string; logo: string; h: number }[] = [
{ name: 'Claude', logo: '/images/clients/claude.svg', h: 20 },
{ name: 'Codex', logo: '/images/clients/codex.png', h: 20 },
{ name: 'Cursor', logo: '/images/clients/cursor.svg', h: 20 },
{ name: 'Windsurf', logo: '/images/clients/windsurf.svg', h: 20 },
{ name: 'OpenClaw', logo: '/images/clients/openclaw.svg', h: 20 },
];
/**
* Welcome-page audience selector — surfaces the three ways into Composio.
* "Build with the SDK" gets the full width of the top row and a strip of
* provider logos showing which frameworks ship first-class support; the
* two non-developer surfaces (For You + CLI) sit below in a 2-col row.
*/
export function HomeSurfaces() {
return (
{description}
{extra} ); } const CLI_INSTALL_COMMAND = 'curl -fsSL https://composio.dev/install | bash'; function CliInstall() { const [copied, setCopied] = useState(false); function handleCopy(e: MouseEvent
{CLI_INSTALL_COMMAND}