feat: combine session actions into options dropdown

SessionCard desktop view:
- Retain primary action button: Open (active) or Start (inactive)
- Replace individual Stop/Tunnel/Delete buttons with a single Options
  dropdown triggered by a ⋯ button
- Dropdown contains applicable actions:
  - Active: Stop, Recreate Tunnel (web), Delete
  - Inactive: Start, Delete
- Add window.confirm before Delete as a safety net
- Dropdown closes on outside click or Escape key
- Add 'more' icon (DotsThreeVertical) to icon component
- Add session-options-dropdown CSS with subtle animation

Mobile view unchanged (already uses MobileActionSheet).

Quality gates: tsc --noEmit pass, npm run build pass, 82/82 tests pass
This commit is contained in:
Developer
2026-06-11 15:32:03 +00:00
parent f1180f6053
commit b4d08b0232
3 changed files with 203 additions and 124 deletions
+3
View File
@@ -35,6 +35,7 @@ import {
Terminal,
ArrowLeft,
DotsSixVertical,
DotsThreeVertical,
Bell,
CaretDown,
CaretRight,
@@ -81,6 +82,7 @@ export type IconName =
| "terminal"
| "arrow-left"
| "drag"
| "more"
| "bell"
| "chevron-down"
| "chevron-right";
@@ -132,6 +134,7 @@ const iconMap: Record<
terminal: Terminal,
"arrow-left": ArrowLeft,
drag: DotsSixVertical,
more: DotsThreeVertical,
bell: Bell,
"chevron-down": CaretDown,
"chevron-right": CaretRight,