File size: 2,721 Bytes
5a81b95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
 * MeetingNotesWidget - Quick Meeting Notes
 */

import React, { useState } from 'react';
import { FileText, Save, Mic } from 'lucide-react';
import { useWidgetCommunication } from '@/contexts/WidgetContext';

export default function MeetingNotesWidget({ widgetId }: { widgetId: string }) {
    const [notes, setNotes] = useState('');
    const [currentMeeting, setCurrentMeeting] = useState<string | null>(null);
    const { subscribeToEvent, broadcastEvent } = useWidgetCommunication(widgetId);

    React.useEffect(() => {
        const unsub = subscribeToEvent('calendar.meeting.joined', (event) => {
            setCurrentMeeting(event.data.title);
        });
        return () => unsub();
    }, []);

    const handleSave = () => {
        broadcastEvent({
            type: 'notes.saved',
            data: { meeting: currentMeeting, notes },
        });
        // TODO: Save to Notion/Google Docs
    };

    return (
        <div className="h-full flex flex-col bg-gradient-to-br from-violet-500/10 to-purple-500/10 backdrop-blur-sm border border-violet-500/30 rounded-lg overflow-hidden">
            <div className="p-4 border-b border-violet-500/20">
                <div className="flex items-center justify-between">
                    <div className="flex items-center gap-2">
                        <FileText className="w-5 h-5 text-violet-400" />
                        <span className="font-display text-sm uppercase tracking-wider text-violet-400">Meeting Notes</span>
                    </div>
                    <button className="p-1.5 bg-violet-500/20 hover:bg-violet-500/30 rounded transition-colors">
                        <Mic className="w-4 h-4 text-violet-400" />
                    </button>
                </div>
                {currentMeeting && (
                    <div className="mt-2 text-xs text-violet-300">📝 {currentMeeting}</div>
                )}
            </div>

            <textarea
                value={notes}
                onChange={(e) => setNotes(e.target.value)}
                placeholder="Start typing your meeting notes..."
                className="flex-1 p-4 bg-transparent text-white text-sm resize-none focus:outline-none placeholder-violet-300/30"
            />

            <div className="p-3 border-t border-violet-500/20 bg-black/20">
                <button
                    onClick={handleSave}
                    className="w-full flex items-center justify-center gap-2 py-2 bg-violet-500 hover:bg-violet-600 text-white rounded text-sm transition-colors"
                >
                    <Save className="w-4 h-4" />
                    Save Notes
                </button>
            </div>
        </div>
    );
}