@metricinsights/concierge
Version:
Metric Insights Concierge Component
41 lines • 1.71 kB
TypeScript
import React from 'react';
import { Block, BlockType } from './contexts/concierge-context';
import { Message } from './contexts/message-context';
export type EventType = 'click' | 'focus' | 'blur' | 'mouseenter' | 'mouseleave' | 'keydown' | 'keyup';
export interface ActionHandler {
(event: React.MouseEvent | React.KeyboardEvent | React.FocusEvent, data: Record<string, string>): void | boolean;
}
type ConciergeKomponentKey = Capitalize<BlockType>;
export interface ConciergeComponents {
[key: ConciergeKomponentKey]: React.ComponentType<{
block: Block;
message: Message;
}>;
}
export interface ConciergeProps {
title?: string;
children?: React.ReactNode;
onMessage?: (message: Message) => void;
onMessageBlock?: (message: Message, block: Block) => void;
render?: (props: {
addMessage: (messageId: string, content: string, type: 'user' | 'assistant', blocks?: Block[]) => string;
cancelRequest: () => void;
clearMessages: () => void;
sendMessage: (input: string) => void;
setInput: (input: string) => void;
toggleOpen: () => void;
updateMessage: (messageId: string, updates: Partial<Omit<Message, 'id' | 'timestamp'>>) => void;
components: ConciergeComponents;
error: string | null;
input: string;
isLoading: boolean;
isOpen: boolean;
messages: Message[];
position: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
theme: 'light' | 'dark';
}) => React.ReactNode;
components?: ConciergeComponents;
}
export declare const Concierge: React.FC<ConciergeProps>;
export default Concierge;
//# sourceMappingURL=concierge.d.ts.map