/** * SlackStatusWidget - Team Presence & Quick Message */ import React, { useState } from 'react'; import { MessageCircle, Users, Send, Circle } from 'lucide-react'; import { useLiveData } from '@/hooks/useLiveData'; import { useWidgetCommunication } from '@/contexts/WidgetContext'; import { cn } from '@/lib/utils'; export default function SlackStatusWidget({ widgetId }: { widgetId: string }) { const [message, setMessage] = useState(''); const { data } = useLiveData({ widgetId, widgetType: 'slack', requiredSources: ['slack-api'], autoConnect: true, pollInterval: 30000, }); const { broadcastEvent } = useWidgetCommunication(widgetId); const team = data?.team || []; const unreadChannels = data?.unreadChannels || 0; const handleSendMessage = () => { if (!message.trim()) return; broadcastEvent({ type: 'slack.message.sent', data: { message }, }); setMessage(''); }; return (
Slack
{unreadChannels > 0 && (
{unreadChannels}
)}
Team Status
{team.slice(0, 5).map((member: any) => (
{member.name}
{member.timezone}
))}
setMessage(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && handleSendMessage()} placeholder="Quick message..." className="flex-1 px-3 py-2 bg-white/5 border border-amber-500/30 rounded text-sm text-white placeholder-amber-300/50 focus:outline-none focus:border-amber-500" />
); }