UNPKG

admesh-ui-sdk

Version:

Beautiful, modern React components for displaying AI-powered product recommendations with citation-based conversation ads, auto-triggered widgets, floating chat, conversational interfaces, persistent sidebar, and built-in tracking

314 lines 9.96 kB
export interface AdMeshRecommendation { title: string; reason: string; intent_match_score: number; admesh_link: string; ad_id: string; product_id: string; url?: string; redirect_url?: string; description?: string; pricing?: string; reward_note?: string | null; keywords?: string[]; categories?: string[]; features?: string[]; integrations?: string[]; has_free_tier?: boolean; trial_days?: number; audience_segment?: string; is_ai_powered?: boolean; is_open_source?: boolean; offer_trust_score?: number; brand_trust_score?: number; reviews_summary?: string; security?: string[]; slug?: string; support?: string[]; badges?: string[]; } export interface AdMeshTheme { mode: 'light' | 'dark'; accentColor?: string; borderRadius?: string; fontFamily?: string; } export type IntentType = 'compare_products' | 'best_for_use_case' | 'trial_demo' | 'budget_conscious'; export type BadgeType = 'Top Match' | 'Free Tier' | 'AI Powered' | 'Popular' | 'New' | 'Trial Available'; export type BadgeVariant = 'primary' | 'secondary' | 'success' | 'warning'; export type BadgeSize = 'sm' | 'md' | 'lg'; export interface TrackingData { adId: string; admeshLink: string; userId?: string; sessionId?: string; productId?: string; revenue?: number; conversionType?: string; metadata?: Record<string, unknown>; } export interface AdMeshProductCardProps { recommendation: AdMeshRecommendation; theme?: AdMeshTheme; showMatchScore?: boolean; showBadges?: boolean; maxKeywords?: number; onClick?: (adId: string, admeshLink: string) => void; onTrackView?: (data: TrackingData) => void; className?: string; } export type ConversationalDisplayMode = 'inline' | 'summary' | 'floating' | 'minimal' | 'citation'; export type ConversationContext = 'chat' | 'assistant' | 'agent' | 'support'; export interface ConversationalAdConfig { displayMode: ConversationalDisplayMode; context: ConversationContext; maxRecommendations?: number; showPoweredBy?: boolean; autoShow?: boolean; delayMs?: number; position?: 'top' | 'bottom' | 'inline'; } export interface AdMeshConversationalUnitProps { recommendations: AdMeshRecommendation[]; config: ConversationalAdConfig; theme?: AdMeshTheme; conversationSummary?: string; userQuery?: string; sessionId?: string; onRecommendationClick?: (adId: string, admeshLink: string) => void; onDismiss?: () => void; className?: string; } export interface AdMeshConversationSummaryProps { recommendations: AdMeshRecommendation[]; conversationSummary: string; theme?: AdMeshTheme; showTopRecommendations?: number; onRecommendationClick?: (adId: string, admeshLink: string) => void; onStartNewConversation?: () => void; className?: string; } export interface AdMeshInlineRecommendationProps { recommendation: AdMeshRecommendation; theme?: AdMeshTheme; compact?: boolean; showReason?: boolean; onClick?: (adId: string, admeshLink: string) => void; className?: string; } export interface AdMeshCitationUnitProps { recommendations: AdMeshRecommendation[]; conversationText: string; theme?: AdMeshTheme; showCitationList?: boolean; citationStyle?: 'numbered' | 'bracketed' | 'superscript'; onRecommendationClick?: (adId: string, admeshLink: string) => void; onCitationHover?: (recommendation: AdMeshRecommendation) => void; className?: string; } export interface AdMeshCitationReferenceProps { recommendation: AdMeshRecommendation; citationNumber: number; citationStyle?: 'numbered' | 'bracketed' | 'superscript'; theme?: AdMeshTheme; showTooltip?: boolean; onClick?: (adId: string, admeshLink: string) => void; onHover?: (recommendation: AdMeshRecommendation) => void; className?: string; } export type SidebarPosition = 'left' | 'right'; export type SidebarSize = 'sm' | 'md' | 'lg' | 'xl'; export type SidebarDisplayMode = 'recommendations' | 'history' | 'favorites' | 'mixed'; export interface AdMeshSidebarConfig { position: SidebarPosition; size: SidebarSize; displayMode: SidebarDisplayMode; collapsible?: boolean; defaultCollapsed?: boolean; showHeader?: boolean; showSearch?: boolean; showFilters?: boolean; maxRecommendations?: number; autoRefresh?: boolean; refreshInterval?: number; } export interface AdMeshSidebarProps { recommendations: AdMeshRecommendation[]; config: AdMeshSidebarConfig; theme?: AdMeshTheme; title?: string; isOpen?: boolean; onToggle?: () => void; onRecommendationClick?: (adId: string, admeshLink: string) => void; onSearch?: (query: string) => void; onFilter?: (filters: SidebarFilters) => void; className?: string; } export interface SidebarFilters { categories?: string[]; hasFreeTier?: boolean; hasTrial?: boolean; minMatchScore?: number; maxPrice?: number; } export interface AdMeshSidebarHeaderProps { title: string; theme?: AdMeshTheme; collapsible?: boolean; isCollapsed?: boolean; onToggle?: () => void; onSearch?: (query: string) => void; showSearch?: boolean; className?: string; } export interface AdMeshSidebarContentProps { recommendations: AdMeshRecommendation[]; displayMode: SidebarDisplayMode; theme?: AdMeshTheme; maxRecommendations?: number; onRecommendationClick?: (adId: string, admeshLink: string) => void; className?: string; } export type ChatMessageRole = 'user' | 'assistant' | 'system'; export type ChatPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'; export type ChatSize = 'sm' | 'md' | 'lg' | 'xl'; export type ChatDisplayMode = 'widget' | 'fullscreen' | 'embedded'; export interface ChatMessage { id: string; role: ChatMessageRole; content: string; timestamp: Date; recommendations?: AdMeshRecommendation[]; isTyping?: boolean; } export interface AdMeshChatConfig { position: ChatPosition; size: ChatSize; displayMode: ChatDisplayMode; autoOpen?: boolean; showWelcomeMessage?: boolean; welcomeMessage?: string; placeholder?: string; maxMessages?: number; enableTypingIndicator?: boolean; enableSuggestions?: boolean; suggestions?: string[]; } export interface AdMeshFloatingChatProps { config: AdMeshChatConfig; theme?: AdMeshTheme; title?: string; subtitle?: string; isOpen?: boolean; onToggle?: () => void; onSendMessage?: (message: string) => Promise<ChatMessage>; onRecommendationClick?: (adId: string, admeshLink: string) => void; autoRecommendations?: AdMeshRecommendation[]; autoRecommendationTrigger?: string; showInputField?: boolean; autoShowRecommendations?: boolean; onAutoRecommendationDismiss?: () => void; className?: string; } export interface AdMeshChatInterfaceProps { messages: ChatMessage[]; config: Partial<AdMeshChatConfig> & { showInputField?: boolean; }; theme?: AdMeshTheme; isLoading?: boolean; onSendMessage?: (message: string) => void; onRecommendationClick?: (adId: string, admeshLink: string) => void; className?: string; } export interface AdMeshChatMessageProps { message: ChatMessage; theme?: AdMeshTheme; onRecommendationClick?: (adId: string, admeshLink: string) => void; className?: string; } export interface AdMeshChatInputProps { placeholder?: string; disabled?: boolean; suggestions?: string[]; theme?: AdMeshTheme; onSendMessage?: (message: string) => void; className?: string; } export interface AdMeshCompareTableProps { recommendations: AdMeshRecommendation[]; theme?: AdMeshTheme; maxProducts?: number; showMatchScores?: boolean; showFeatures?: boolean; onProductClick?: (adId: string, admeshLink: string) => void; className?: string; } export interface AdMeshBadgeProps { type: BadgeType; variant?: BadgeVariant; size?: BadgeSize; className?: string; } export interface AdMeshLayoutProps { recommendations: AdMeshRecommendation[]; intentType?: IntentType; theme?: AdMeshTheme; maxDisplayed?: number; showMatchScores?: boolean; showFeatures?: boolean; autoLayout?: boolean; onProductClick?: (adId: string, admeshLink: string) => void; onTrackView?: (data: TrackingData) => void; className?: string; } export interface AdMeshLinkTrackerProps { adId: string; admeshLink: string; productId?: string; children: React.ReactNode; onClick?: () => void; trackingData?: Record<string, unknown>; className?: string; } export interface UseAdMeshTrackerReturn { trackClick: (data: TrackingData) => Promise<void>; trackConversion: (data: TrackingData) => Promise<void>; trackView: (data: TrackingData) => Promise<void>; isTracking: boolean; error: string | null; } export interface AgentRecommendationResponse { session_id: string; intent: { categories?: string[]; goal?: string; llm_intent_confidence_score?: number; known_mentions?: string[]; intent_type?: string; intent_group?: string; keywords?: string[]; }; response: { summary?: string; recommendations: AdMeshRecommendation[]; followup_suggestions?: { label: string; query: string; product_mentions: string[]; admesh_links: Record<string, string>; session_id: string; }[]; }; tokens_used: number; model_used: string; recommendation_id?: string; end_of_session?: boolean; } export interface AdMeshConfig { apiBaseUrl?: string; trackingEnabled?: boolean; defaultTheme?: AdMeshTheme; debug?: boolean; } //# sourceMappingURL=index.d.ts.map