/** Exactly ONE of `href` (anchor, target _blank) or `onClick` (action * button — share popups via window.open inside the click gesture, * copy-to-clipboard) — the discriminated union makes a dead no-action * entry unrepresentable. */ type SocialLink = { platform: string; label?: string; /** `internal` links are only ever shown on surfaces that opt in (and must be * gated server-side); with `groupByVisibility` they render after a divider. */ visibility?: "external" | "internal"; } & ({ href: string; onClick?: never; } | { onClick: () => void; href?: never; }); interface SocialIconRowProps { className?: string; links?: SocialLink[]; variant?: "accent" | "outline" | "transparent" | "destructive" | null | undefined; /** Quiet metadata row for page-level identity/share slots: 32px ghost * icon buttons (size="icon-sm", 16px glyphs), gap-2, w-fit container, * variant defaulting to "transparent" (an explicit `variant` still wins). * Default false: 44/48px buttons stretching across the container — * the original card-width behavior (TMCG member cards, footers). */ compact?: boolean; /** Render the `external` links and the `internal` links as two groups split * by a thin divider (only when BOTH groups are non-empty). Visibility is * presentation-only here — the caller must still gate which links it passes * server-side. Default false keeps a single flat row. */ groupByVisibility?: boolean; } export declare function SocialIconRow({ className, links, variant, compact, groupByVisibility }: SocialIconRowProps): import("react").JSX.Element; export {}; //# sourceMappingURL=social-icon-row.d.ts.map