diff --git a/src/components/sidebar/Sidebar.tsx b/src/components/sidebar/Sidebar.tsx index 50b0829..192c96f 100644 --- a/src/components/sidebar/Sidebar.tsx +++ b/src/components/sidebar/Sidebar.tsx @@ -15,6 +15,7 @@ import { } from '@dnd-kit/core' import { CSS } from '@dnd-kit/utilities' import { useAppStore } from '../../stores/appStore' +import { TrashView } from './TrashView' import { formatDate } from '../../lib/utils' import type { Folder as FolderType, Note } from '../../db' @@ -25,6 +26,7 @@ export function Sidebar() { updateNote, updateFolder, setActiveNote, setActiveFolder, setSearch, toggleTheme, toggleStar, filteredNotes, activeTag, setActiveTag, sortBy, sortOrder, setSortBy, setSortOrder, + trashNotes, } = useAppStore() const [expandedFolders, setExpandedFolders] = useState>(new Set()) @@ -229,6 +231,13 @@ export function Sidebar() { } label="使用指南" active={activeNoteId === '__welcome__'} onClick={() => setActiveNote('__welcome__')} /> } label="所有笔记" count={notes.length} active={activeFolderId === 'all' && activeNoteId !== '__welcome__'} onClick={() => { setActiveFolder('all'); if (activeNoteId === '__welcome__') setActiveNote(null) }} /> } label="收藏" count={notes.filter(n => n.starred).length} active={activeFolderId === 'starred'} onClick={() => { setActiveFolder('starred'); if (activeNoteId === '__welcome__') setActiveNote(null) }} /> + } + label="回收站" + count={trashNotes().length || undefined} + active={activeFolderId === 'trash'} + onClick={() => { setActiveFolder('trash'); if (activeNoteId === '__welcome__') setActiveNote(null) }} + /> {/* Folders section */} @@ -264,6 +273,10 @@ export function Sidebar() { {/* Note list */}
+ {activeFolderId === 'trash' ? ( + + ) : ( + <>
@@ -343,9 +356,9 @@ export function Sidebar() { /> ))}
+ + )}
- - {/* Context menu */} {contextMenu && (
e.stopPropagation()} > -

确认删除笔记?

-

此操作无法撤销。

+

将笔记移入回收站?

+

笔记将在 30 天后永久删除,期间可随时恢复。

+ >移入回收站