diff --git a/web/src/lib/components/layout/WorkspaceSwitcher.svelte b/web/src/lib/components/layout/WorkspaceSwitcher.svelte index 309fb0af..5e38e571 100644 --- a/web/src/lib/components/layout/WorkspaceSwitcher.svelte +++ b/web/src/lib/components/layout/WorkspaceSwitcher.svelte @@ -1,9 +1,12 @@ {#snippet workspaceList()} @@ -103,6 +172,46 @@ {/snippet} +{#snippet deletedSection()} + + {#if deleted.length > 0} +
+ + {#if deletedExpanded} +
+ {#each deleted as ws (ws.slug)} +
+ {ws.name} + + {ws.days_left} {ws.days_left === 1 ? 'day' : 'days'} left + + +
+ {/each} +
+ {/if} +
+ {/if} +{/snippet} +
@@ -203,4 +314,63 @@ font-size: 1em; border-radius: var(--radius-sm); } + + /* ── Recently deleted ─────────────────────────────────────────────── */ + .deleted-section { border-top: 1px solid var(--border); } + .deleted-header { + display: flex; + align-items: center; + gap: var(--space-2); + color: var(--text-muted); + font-size: 0.8em; + text-transform: uppercase; + letter-spacing: 0.03em; + } + .deleted-caret { font-size: 0.9em; flex-shrink: 0; } + .deleted-title { flex: 1; min-width: 0; } + .deleted-count { + flex-shrink: 0; + padding: 0 var(--space-2); + background: var(--bg-tertiary); + border-radius: var(--radius-sm); + font-size: 0.9em; + } + .deleted-list { display: flex; flex-direction: column; } + .deleted-item { + display: flex; + align-items: center; + gap: var(--space-2); + padding: var(--space-2) var(--space-4); + font-size: 0.9em; + } + .deleted-name { + flex: 1; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--text-secondary); + } + .deleted-days { + flex-shrink: 0; + color: var(--text-muted); + font-size: 0.85em; + white-space: nowrap; + } + .restore-btn { + flex-shrink: 0; + padding: var(--space-1) var(--space-2); + background: none; + border: 1px solid var(--border); + border-radius: var(--radius-sm); + color: var(--accent-blue); + cursor: pointer; + font-size: 0.85em; + } + .restore-btn:hover:not(:disabled) { background: var(--bg-hover); } + .restore-btn:disabled { opacity: 0.6; cursor: default; } + + /* Inside the mobile sheet, give the deleted rows the same roomier + padding as the workspace rows above. */ + .sheet-body .deleted-item { padding: var(--space-2) var(--space-3); }