feat(dashboard): add Respecify All action to the Todo column

Adds a dropdown menu (MoreVertical icon) to the Todo column header with a
Respecify All action that bulk-moves every visible todo task back to Triage
after a confirm dialog. Toasts surface partial-failure counts when the
parallel onMoveTask calls don't all succeed. Click-outside and Escape close
the popover. Supporting .column-menu / .column-menu-popover / .column-menu-item
styles added in styles.css.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsxdsm
2026-04-25 09:58:53 -07:00
parent 303fc98b10
commit d84d5bb3b8
2 changed files with 135 additions and 2 deletions

View File

@@ -2507,3 +2507,55 @@ input[type="range"]:focus-visible {
.text-muted { color: var(--text-muted); }
.text-secondary { color: var(--text-secondary, var(--text-muted)); }
.text-dim { color: var(--text-dim, var(--text-muted)); }
/* === Column header dropdown menu (todo column "Respecify All", etc.) ====== */
.column-menu {
position: relative;
display: inline-flex;
}
.column-menu-popover {
position: absolute;
top: calc(100% + var(--space-xs));
right: 0;
min-width: calc(var(--space-2xl) * 6);
padding: var(--space-xs);
background: var(--card);
border: 1px solid var(--border);
border-radius: var(--radius-md);
box-shadow: var(--shadow-lg);
z-index: 30;
display: flex;
flex-direction: column;
}
.column-menu-item {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: calc(var(--space-xs) / 2);
padding: var(--space-sm) var(--space-md);
background: transparent;
border: 0;
border-radius: var(--radius-sm);
text-align: left;
font-size: 13px;
color: var(--text);
cursor: pointer;
transition: background var(--transition-fast);
}
.column-menu-item:hover:not(:disabled),
.column-menu-item:focus-visible {
background: var(--card-hover);
}
.column-menu-item:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.column-menu-item-hint {
font-size: 11px;
color: var(--text-muted);
}