diff --git a/src/components/sidebar/TrashView.tsx b/src/components/sidebar/TrashView.tsx
new file mode 100644
index 0000000..1a9b93a
--- /dev/null
+++ b/src/components/sidebar/TrashView.tsx
@@ -0,0 +1,75 @@
+import { Trash2, RotateCcw } from 'lucide-react'
+import { useAppStore } from '../../stores/appStore'
+
+function daysLeft(deletedAt: number): number {
+ const elapsed = Date.now() - deletedAt
+ return Math.max(0, 30 - Math.floor(elapsed / (24 * 60 * 60 * 1000)))
+}
+
+export function TrashView() {
+ const { trashNotes, restoreNote, emptyTrash } = useAppStore()
+ const notes = trashNotes()
+
+ return (
+
+
+
+ {notes.length > 0 ? `${notes.length} 条笔记` : '回收站为空'}
+
+ {notes.length > 0 && (
+
+ )}
+
+
+
+ {notes.length === 0 ? (
+
+ ) : (
+ notes.map(note => (
+
(e.currentTarget.style.background = 'var(--bg-muted)')}
+ onMouseLeave={e => (e.currentTarget.style.background = 'transparent')}
+ >
+
+
+ {note.title || '无标题'}
+
+
+ {daysLeft(note.deletedAt!)} 天后永久删除
+
+
+
+
+ ))
+ )}
+
+
+ )
+}