diff --git a/memento-note/components/brainstorm/brainstorm-page.tsx b/memento-note/components/brainstorm/brainstorm-page.tsx index 1005a7e..fc368c7 100644 --- a/memento-note/components/brainstorm/brainstorm-page.tsx +++ b/memento-note/components/brainstorm/brainstorm-page.tsx @@ -1,4 +1,5 @@ 'use client' +import { toast } from 'sonner' import React, { useState, useMemo, useEffect, useRef, useCallback } from 'react' import { useRouter, useSearchParams } from 'next/navigation' @@ -26,9 +27,11 @@ import { LayoutGrid, X, Edit2, + Maximize2, } from 'lucide-react' import dynamic from 'next/dynamic' import { useLanguage } from '@/lib/i18n' +import { useNotePeek, NotePeekPanel } from '@/components/note-peek' import { useBrainstormSession, useBrainstormSessions, @@ -76,6 +79,7 @@ const WAVE_COLORS: Record export function BrainstormPage() { const router = useRouter() + const peek = useNotePeek() const searchParams = useSearchParams() const { t, language } = useLanguage() const { data: authSession } = useSession() @@ -132,8 +136,7 @@ export function BrainstormPage() { const renameSession = useRenameBrainstormSession(activeSessionId || '') const [impactToast, setImpactToast] = useState<{ notesEnriched: number; notesMarkedDry: number } | null>(null) const [exportError, setExportError] = useState(null) - const [exportToast, setExportToast] = useState<{ noteTitle: string; notebookName: string } | null>(null) - const [convertToast, setConvertToast] = useState<{ noteTitle: string; noteId: string } | null>(null) + const [remoteMove, setRemoteMove] = useState<{ ideaId: string; x: number; y: number; _seq: number } | null>(null) const [playbackIdeas, setPlaybackIdeas] = useState(null) const [viewMode, setViewMode] = useState<'canvas' | 'list'>('canvas') @@ -242,11 +245,15 @@ export function BrainstormPage() { try { const result = await convertIdea.mutateAsync(idea.id) if (result?.id) { - setConvertToast({ noteTitle: result.title || idea.title, noteId: result.id }) - setTimeout(() => { - setConvertToast(null) - router.push(`/home?openNote=${result.id}`) - }, 2000) + toast.success(t('brainstorm.noteCreated') || 'Note created', { + description: result.title || idea.title, + action: { + label: t('notePeek.openFully') || 'Open', + onClick: () => router.push(`/home?openNote=${result.id}`), + }, + duration: 10000, + }) + peek.open(result.id) } } catch {} } @@ -287,11 +294,15 @@ export function BrainstormPage() { const result = await exportBrainstorm.mutateAsync() if (result?.id) { const notebookName = result._notebookName || t('brainstorm.exportDefaultNotebookName') - setExportToast({ noteTitle: result.title || t('brainstorm.exportDefaultNoteTitle'), notebookName }) - setTimeout(() => { - setExportToast(null) - router.push(`/home?openNote=${result.id}`) - }, 2000) + toast.success(t('brainstorm.noteCreated') || 'Note created', { + description: `${result.title || t('brainstorm.exportDefaultNoteTitle')} — ${notebookName}`, + action: { + label: t('notePeek.openFully') || 'Open', + onClick: () => router.push(`/home?openNote=${result.id}`), + }, + duration: 10000, + }) + peek.open(result.id) return } const impact = await finalizeBrainstorm.mutateAsync() @@ -846,7 +857,7 @@ export function BrainstormPage() { {ref.noteId && (