{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "sales-ai-hero",
"type": "registry:ui",
"title": "Sales AI Hero",
"description": "A SaaS landing hero with floating announcement pill, oversized centered headline, paired square + landscape media tiles, and a divider-flanked trusted-by logo strip.",
"dependencies": [
"lucide-react"
],
"files": [
{
"path": "registry/ruixenui/sales-ai-hero.tsx",
"content": "\"use client\";\n\nimport * as React from \"react\";\nimport Link from \"next/link\";\nimport { ArrowRight, Zap } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\n\n/* ── types ───────────────────────────────────────────────────── */\n\ninterface Announcement {\n label: string;\n href?: string;\n /** Override the default lightning glyph */\n icon?: React.ReactNode;\n}\n\ninterface LogoItem {\n name: string;\n /** Optional src for an rendering. Omit to render `name` as text mark. */\n src?: string;\n /** Or supply fully custom JSX (e.g. an inline SVG wordmark) */\n logo?: React.ReactNode;\n href?: string;\n}\n\ninterface TrustedBy {\n /** Headline text, supports inline markup via `highlight` slot below. */\n prefix?: string;\n /** Optional highlighted segment rendered bold next to `prefix`. */\n highlight?: string;\n /** Trailing text after the highlighted segment. */\n suffix?: string;\n logos: LogoItem[];\n}\n\nexport interface SalesAiHeroProps {\n announcement?: Announcement;\n title: React.ReactNode;\n description?: React.ReactNode;\n /** Content for the left (portrait) media tile. Falls back to a placeholder. */\n leftMedia?: React.ReactNode;\n /** Content for the right (landscape) media tile. Falls back to a placeholder. */\n rightMedia?: React.ReactNode;\n /** Trusted-by strip rendered below the media. Omit to hide. */\n trustedBy?: TrustedBy;\n className?: string;\n}\n\n/* ── pieces ──────────────────────────────────────────────────── */\n\nfunction AnnouncementPill({ announcement }: { announcement: Announcement }) {\n const body = (\n <>\n \n {announcement.icon ?? (\n
\n {description}\n
\n )}\n\n {/* ── media row ─────────────────────────────────── */}\n\n {trustedBy.prefix ?? \"Trusted By \"}\n {trustedBy.highlight && (\n \n {trustedBy.highlight}\n \n )}\n {trustedBy.suffix}\n
\n \n