@cossistant/next
Version:
Next.js-ready SDK for building AI-powered support/chat widgets. Hooks + primitives, WS-driven, TypeScript-first. Next.js-ready, Tailwind optional.
59 lines (58 loc) • 2.16 kB
TypeScript
import { PreviewTypingParticipant } from "./typing.js";
import { useConversationTimelineItems } from "./use-conversation-timeline-items.js";
//#region ../react/src/hooks/use-conversation-preview.d.ts
type ConversationPreviewLastMessage = {
content: string;
time: string;
isFromVisitor: boolean;
senderName?: string;
senderImage?: string | null;
};
type ConversationPreviewAssignedAgent = {
name: string;
image: string | null;
type: "human" | "ai" | "fallback";
};
type ConversationPreviewTypingParticipant = PreviewTypingParticipant;
type ConversationPreviewTypingState = {
participants: ConversationPreviewTypingParticipant[];
primaryParticipant: ConversationPreviewTypingParticipant | null;
label: string | null;
isTyping: boolean;
};
type UseConversationPreviewOptions = {
conversation: Conversation;
/**
* Whether the hook should fetch timeline items for the conversation.
* Enabled by default.
*/
includeTimelineItems?: boolean;
/**
* Optional timeline items to merge with the live ones (e.g. optimistic items).
*/
initialTimelineItems?: TimelineItem[];
/**
* Typing state configuration (mainly exclusions for the current visitor).
*/
typing?: {
excludeVisitorId?: string | null;
excludeUserId?: string | null;
excludeAiAgentId?: string | null;
};
};
type UseConversationPreviewReturn = {
conversation: Conversation;
title: string;
lastMessage: ConversationPreviewLastMessage | null;
assignedAgent: ConversationPreviewAssignedAgent;
typing: ConversationPreviewTypingState;
timeline: ReturnType<typeof useConversationTimelineItems>;
};
/**
* Composes conversation metadata including derived titles, last message
* snippets and typing state for use in lists.
*/
declare function useConversationPreview(options: UseConversationPreviewOptions): UseConversationPreviewReturn;
//#endregion
export { ConversationPreviewAssignedAgent, ConversationPreviewLastMessage, ConversationPreviewTypingParticipant, ConversationPreviewTypingState, UseConversationPreviewOptions, UseConversationPreviewReturn, useConversationPreview };
//# sourceMappingURL=use-conversation-preview.d.ts.map