'use client';

/** Messages — chat transcript rendering (list, bubble, tool calls, …). */

export {
  MessageList,
  type MessageListProps,
  type MessageListHandle,
} from './MessageList';
export { MessageBubble, type MessageBubbleProps } from './MessageBubble';
// The auto-detect link-preview slot — shared by MessageBubble and any forked
// bubble (e.g. cmdop's mention bubble) so previews never silently drift.
export { AutoLinkPreview, type AutoLinkPreviewProps } from './AutoLinkPreview';
// Re-exported from the shared `common/link-preview` location (the card was
// hoisted out of chat so the NotionEditor bookmark node can reuse it). The
// chat public surface (`@djangocfg/ui-tools/chat`) keeps exporting it from
// here unchanged.
export { LinkPreviewCard, type LinkPreviewCardProps } from '../../../common/link-preview';
export { MessageActions, type MessageActionsProps } from './MessageActions';
export {
  BubbleContextMenu,
  buildDefaultBubbleMenuItems,
  composeBubbleMenuItems,
  type BubbleContextMenuProps,
  type BubbleMenuItem,
  type DefaultBubbleMenuHandlers,
} from './BubbleContextMenu';
export { Sources, type SourcesProps } from './Sources';
export { ToolCalls, type ToolCallsProps, type ToolPayloadKind } from './ToolCalls';
// Shared payload renderer (object → JsonTree, string/streaming → <pre>) so a
// host that overrides `renderToolCall` renders payloads identically.
export { ToolPayloadValue, type ToolPayloadValueProps } from './ToolPayloadValue';
export {
  Attachments,
  AttachmentsGrid,
  AttachmentsList,
  type AttachmentsProps,
  type AttachmentsGridProps,
  type AttachmentsListProps,
  type AttachmentRenderer,
  type AttachmentRendererArgs,
  type AttachmentRendererMap,
} from './Attachments';
export { JumpToLatest, type JumpToLatestProps } from './JumpToLatest';
export { StreamingIndicator, type StreamingIndicatorProps } from './StreamingIndicator';
export {
  MessageBlocks,
  type MessageBlocksProps,
  createBlockRegistry,
  BUILTIN_BLOCK_REGISTRY,
  type BlockRegistry,
  type BlockRenderer,
  type BlockRenderContext,
} from './blocks';
