{{ error }}
diff --git a/web/src/components/Sidebar.vue b/web/src/components/Sidebar.vue
index 3cea9d1..f210056 100644
--- a/web/src/components/Sidebar.vue
+++ b/web/src/components/Sidebar.vue
@@ -9,7 +9,15 @@ defineProps<{
const emit = defineEmits<{
select: [id: string]
create: []
+ delete: [id: string]
}>()
+
+function onDelete(e: Event, id: string) {
+ e.stopPropagation()
+ if (confirm('确定删除这个项目?')) {
+ emit('delete', id)
+ }
+}
@@ -26,7 +34,10 @@ const emit = defineEmits<{
:class="{ active: project.id === selectedId }"
@click="emit('select', project.id)"
>
- {{ project.name }}
+
+ {{ project.name }}
+
+
{{ new Date(project.updated_at).toLocaleDateString() }}
@@ -96,9 +107,46 @@ const emit = defineEmits<{
border-left: 3px solid var(--accent);
}
+.project-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
.project-name {
font-size: 14px;
font-weight: 500;
+ flex: 1;
+ min-width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.btn-delete {
+ display: none;
+ width: 20px;
+ height: 20px;
+ padding: 0;
+ border: none;
+ background: transparent;
+ color: var(--text-secondary);
+ font-size: 16px;
+ line-height: 1;
+ cursor: pointer;
+ border-radius: 4px;
+ flex-shrink: 0;
+}
+
+.btn-delete:hover {
+ background: var(--error, #e74c3c);
+ color: #fff;
+}
+
+.project-item:hover .btn-delete {
+ display: flex;
+ align-items: center;
+ justify-content: center;
}
.project-time {