import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/components/ui/dialog"; import { Textarea } from "@/components/ui/textarea"; import { Input } from "@/components/ui/input"; import { Zap, Send } from "lucide-react"; import NotesService from "@/services/NotesService"; import { showSuccess, showError } from "@/utils/toast"; interface QuickCaptureWidgetProps { onNoteCaptured?: () => void; } export function QuickCaptureWidget({ onNoteCaptured }: QuickCaptureWidgetProps) { const [open, setOpen] = useState(false); const [title, setTitle] = useState(""); const [content, setContent] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); const handleCapture = async () => { if (!content.trim()) { showError("Le contenu ne peut pas être vide"); return; } setIsSubmitting(true); try { const noteTitle = title.trim() || `Note rapide - ${new Date().toLocaleDateString('fr-FR', { day: '2-digit', month: 'short', hour: '2-digit', minute: '2-digit' })}`; await NotesService.createNote(noteTitle, content); showSuccess("Note capturée avec succès"); // Reset form setTitle(""); setContent(""); setOpen(false); // Notify parent component if (onNoteCaptured) { onNoteCaptured(); } } catch (error) { showError("Erreur lors de la capture de la note"); } finally { setIsSubmitting(false); } }; const handleKeyDown = (e: React.KeyboardEvent) => { // Cmd/Ctrl + Enter to submit if ((e.metaKey || e.ctrlKey) && e.key === 'Enter') { e.preventDefault(); handleCapture(); } // Escape to close if (e.key === 'Escape') { setOpen(false); } }; return ( <> {/* Floating Action Button */} {/* Quick Capture Modal */} Capture rapide Capturez rapidement une idée ou une note. Appuyez sur Ctrl+Entrée pour enregistrer.
{/* Optional Title */}
setTitle(e.target.value)} className="text-lg font-medium" autoFocus={false} />

Si vide, un titre avec la date sera généré automatiquement

{/* Content */}