"use client";
import * as React from "react";
interface FloatingChatButtonProps {
onClick: () => void;
isOpen?: boolean;
unreadCount?: number;
position?: "bottom-right" | "bottom-left" | "top-right" | "top-left";
size?: "sm" | "md" | "lg";
color?: string;
className?: string;
disabled?: boolean;
ariaLabel?: string;
}
export function FloatingChatButton({
onClick,
isOpen = false,
unreadCount = 0,
position = "bottom-right",
size = "md",
color = "#3B82F6",
className = "",
disabled = false,
ariaLabel = "Open chat",
}: FloatingChatButtonProps) {
// Position classes
const positionClasses = {
"bottom-right": "bottom-4 right-4",
"bottom-left": "bottom-4 left-4",
"top-right": "top-4 right-4",
"top-left": "top-4 left-4",
};
// Size classes
const sizeClasses = {
sm: "w-12 h-12 text-sm",
md: "w-14 h-14 text-base",
lg: "w-16 h-16 text-lg",
};
const baseClasses = [
"fixed z-50 rounded-full shadow-lg",
"flex items-center justify-center",
"transition-all duration-200 ease-in-out",
"hover:scale-110 focus:scale-110",
"focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500",
isOpen ? "rotate-45" : "",
disabled
? "opacity-50 cursor-not-allowed"
: "cursor-pointer hover:shadow-xl",
positionClasses[position],
sizeClasses[size],
className,
]
.filter(Boolean)
.join(" ");
return (
);
}
// Type exports for compatibility
export interface Message {
id: string;
text: string;
sender: "user" | "bot";
timestamp: Date;
type?: "text" | "image" | "file";
metadata?: Record;
}
export interface AgentConfig {
id: string;
name: string;
description: string;
systemPrompt: string;
model: string;
temperature: number;
maxTokens: number;
enabled: boolean;
createdAt: Date;
updatedAt: Date;
}