/** * One-component-fits-all "Ask" affordance shared across the three * chat-adjacent surfaces (source chips, inline cards, search results). * * Before this primitive, the same semantic action was implemented three * different ways: * - Source chip: inline `` * - Search results: nothing (asymmetric — no Ask) * * Three icon sizes, three different opacity rules, three different DOM * shapes for the same action. Centralized here as a single `Button`- * backed wrapper so the DOM + a11y + hover behavior live in one place. * The `density` prop picks the visual variant; the icon/label/click * semantics are identical across all three. */ import React from 'react'; import type { ChatRef } from './chat-ref.types'; export type SourceActionDensity = 'inline' | 'card' | 'list-row'; export interface SourceActionButtonProps { /** The row to drill into when clicked. The button is HIDDEN when this * is null (e.g. row has no primary key — Ask can't fire). */ chatRef: ChatRef | null; /** Click handler. Receives the chatRef. When undefined the button is * hidden — same as null chatRef. */ onDiscuss?: (ref: ChatRef) => void; /** Visual density / layout. Defaults to `'inline'`. */ density?: SourceActionDensity; /** Optional className appended to the outer element. */ className?: string; /** Button text label override. Defaults to `'Ask'`. The Display variant * on inline cards passes `'Display'` here. Density `'inline'` shows * the icon only — the label is used for aria-label / title even when * it doesn't render visibly. */ label?: string; } export declare function SourceActionButton({ chatRef, onDiscuss, density, className, label, }: SourceActionButtonProps): React.ReactElement | null; //# sourceMappingURL=source-action-button.d.ts.map