feat: busy container overlays for lifecycle actions

Add a reusable LoadingOverlay component that dims and disables the
container owning an in-flight action, with a spinning indicator and
label. Apply it to:

- SessionCard (when actionBusyId matches)
- InstanceList cards (per busyInstanceId with action-specific labels)
- CreateSessionForm (while submitting)
- ToolStarter (while starting)

Also add .icon-spin animation and position:relative to the relevant
containers.

Quality gates: npm run typecheck, npm run lint, npm test -- --run
(87 passed).
This commit is contained in:
Developer
2026-06-13 10:10:28 +00:00
parent 8a8a9bc9e4
commit f8b162ec5f
6 changed files with 84 additions and 0 deletions
+45
View File
@@ -383,6 +383,51 @@ a.nav-item,
align-items: center;
}
/* ============================================
Loading Overlay
============================================ */
.loading-overlay {
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.12);
backdrop-filter: blur(1px);
border-radius: inherit;
display: flex;
align-items: center;
justify-content: center;
z-index: 10;
}
.loading-overlay-content {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--space-2);
color: var(--text, currentColor);
}
.loading-overlay-label {
font-size: var(--text-sm);
font-weight: 500;
}
.icon-spin {
animation: icon-spin 1s linear infinite;
}
@keyframes icon-spin {
to {
transform: rotate(360deg);
}
}
.session-card,
.tool-starter,
.create-session-form-wrapper {
position: relative;
}
/* ============================================
Terminal Styles
============================================ */