import ReactDOM from 'react-dom' import { ArrowUp, Reply, Smile, X } from 'lucide-react' import type { User } from '../../types' import { useCollabChat } from './useCollabChat' import { ChatMessages } from './CollabChatMessages' import { EmojiPicker } from './CollabChatEmojiPicker' import { ReactionMenu } from './CollabChatReactionMenu' /* ── Main Component ── */ interface CollabChatProps { tripId: number currentUser: User } export default function CollabChat({ tripId, currentUser }: CollabChatProps) { const S = useCollabChat(tripId, currentUser) const { t, is12h, can, trip, canEdit, messages, setMessages, loading, setLoading, hasMore, setHasMore, loadingMore, setLoadingMore, text, setText, replyTo, setReplyTo, hoveredId, setHoveredId, sending, setSending, showEmoji, setShowEmoji, reactMenu, setReactMenu, deletingIds, setDeletingIds, deleteTimersRef, containerRef, messagesRef, scrollRef, textareaRef, emojiBtnRef, isAtBottom, scrollToBottom, checkAtBottom, handleLoadMore, handleTextChange, handleSend, handleKeyDown, handleDelete, handleReact, handleEmojiSelect, isOwn, isEmojiOnly } = S if (loading) { return (
) } return (
{/* Composer */}
{/* Reply preview */} {replyTo && (
{replyTo.username}: {(replyTo.text || '').slice(0, 60)}
)}
{/* Emoji button */} {canEdit && ( )}