import { PopoverContentProps, PopoverDialogRoleProps } from '../internal/components/Popover'; import { TooltipProps } from '../components'; /** * Minimal props for showing an AI mark as a boolean flag (for example on `Chip`). * For the standalone icon component, use `AiMarkProps` on `AiMark` instead. */ export type AiMarkBooleanProps = { /** * When `true`, displays the AI indicator icon with no additional context. */ aiMark?: boolean; }; /** * Configuration for an AI mark that opens a tooltip or popover for additional context. * Discriminated union: set `type` to `"tooltip"` or `"popover"` to select the corresponding configuration shape. */ export type AiMarkWithTooltipOrPopoverConfig = { /** Discriminant for the popover variant. */ type: "popover"; /** * The content displayed inside the popover. When omitted, defaults to the standard AI disclaimer message and a Learn more link to the privacy policy. */ content?: React.ReactNode; /** * Additional props passed to the underlying `Popover` component. */ props?: Omit; /** * Accessible label for the trigger button that opens the popover. */ triggerLabel: string; /** * Additional props passed to the popover content container. */ contentProps?: Pick; } | { /** Discriminant for the tooltip variant. */ type: "tooltip"; /** * The text content displayed inside the tooltip. When omitted, defaults to "AI can make mistakes." */ content?: string; /** * Additional props passed to the underlying `Tooltip` component. */ props?: Omit; /** * Accessible label for the trigger button that opens the tooltip. */ triggerLabel: string; }; /** * Props that include an optional AI mark on a label or field. */ export type AiMarkWithTooltipOrPopoverProps = { /** * Accepts either a `boolean` or an `AiMarkWithTooltipOrPopoverConfig` object. * - `true` — Displays the AI indicator icon with no additional context. * - `AiMarkWithTooltipOrPopoverConfig` — Displays the AI indicator icon with a tooltip or popover for additional context. */ aiMark?: boolean | AiMarkWithTooltipOrPopoverConfig; }; /** * Controls which axes have their padding collapsed so the component's layout * footprint matches a plain inline icon on those axes. For interactive variants, * the ghost button's hit area is unchanged; for non-interactive variants, padding * is added to the non-collapsed axes. * - `"inline"` — collapse the inline axis (left/right) * - `"block"` — collapse the block axis (top/bottom) * - `"all"` — collapse both axes */ export type AiMarkCollapsePadding = "inline" | "block" | "all";