v0.44.0: role-aware drive management — protected lockout + customer type-to-confirm wipe + drive-list restyle
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3086,3 +3086,58 @@ a.stat-card:hover {
|
||||
border-radius: 6px; padding: 0.2rem 0.5rem; cursor: pointer; font-size: 0.8rem;
|
||||
}
|
||||
.btn-danger-outline:hover { background: var(--red-bg); }
|
||||
|
||||
/* ============================================================================
|
||||
Agent drive lists (overview + init/attach selector) — storage authz redesign.
|
||||
Reuses the existing card/badge/bar tokens; no new design system.
|
||||
============================================================================ */
|
||||
.drive-list { display: flex; flex-direction: column; gap: .6rem; margin-top: .25rem; }
|
||||
.drive-card {
|
||||
background: var(--bg-card);
|
||||
border: 1px solid var(--border-color);
|
||||
border-left: 4px solid var(--gray, #6e7681);
|
||||
border-radius: 12px;
|
||||
padding: .85rem 1rem;
|
||||
display: flex; flex-direction: column; gap: .55rem;
|
||||
}
|
||||
.drive-card.role-user-data { border-left-color: var(--accent-blue); }
|
||||
.drive-card.role-system,
|
||||
.drive-card.role-backup { border-left-color: var(--yellow); }
|
||||
.drive-card.is-selectable { cursor: pointer; transition: border-color .15s, background .15s; }
|
||||
.drive-card.is-selectable:hover { border-color: var(--accent-light); }
|
||||
.drive-card.is-picked { border-color: var(--accent-light); background: rgba(0, 136, 204, 0.06); }
|
||||
.drive-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: .75rem; }
|
||||
.drive-id { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }
|
||||
.drive-name { font-size: .95rem; font-weight: 600; color: var(--text-primary); }
|
||||
.drive-sub {
|
||||
font-size: .78rem; color: var(--text-muted);
|
||||
font-family: 'JetBrains Mono', monospace; word-break: break-all;
|
||||
}
|
||||
.drive-badges { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; justify-content: flex-end; }
|
||||
.drive-cap { display: flex; flex-direction: column; gap: .3rem; }
|
||||
.drive-cap .system-bar { height: 8px; }
|
||||
.drive-cap-label { font-size: .75rem; color: var(--text-muted); font-family: 'JetBrains Mono', monospace; }
|
||||
.drive-actions { display: flex; flex-wrap: wrap; gap: .4rem; }
|
||||
.drive-select { display: flex; align-items: center; gap: .5rem; }
|
||||
|
||||
/* badges missing from the global sheet */
|
||||
.badge-ok { background: rgba(35, 134, 54, 0.18); color: #3fb950; }
|
||||
.badge-lock { background: rgba(210, 153, 34, 0.18); color: var(--yellow); }
|
||||
.badge-muted { background: rgba(110, 118, 129, 0.18); color: var(--text-muted); }
|
||||
.badge .lock-ico { margin-right: .25rem; }
|
||||
span.mono, .mono { font-family: 'JetBrains Mono', monospace; }
|
||||
|
||||
/* Type-to-confirm modal (destructive user-data eject/wipe) */
|
||||
.confirm-overlay {
|
||||
position: fixed; inset: 0; background: rgba(0,0,0,.6);
|
||||
display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 1rem;
|
||||
}
|
||||
.confirm-box {
|
||||
background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 14px;
|
||||
max-width: 480px; width: 100%; padding: 1.4rem; box-shadow: 0 12px 40px rgba(0,0,0,.5);
|
||||
}
|
||||
.confirm-box h3 { margin: 0 0 .75rem; font-size: 1.05rem; }
|
||||
.confirm-box .confirm-apps { margin: .5rem 0; padding-left: 1.1rem; }
|
||||
.confirm-box .confirm-apps li { margin: .15rem 0; }
|
||||
.confirm-box .confirm-input { margin: .9rem 0 .4rem; }
|
||||
.confirm-box .form-actions { display: flex; gap: .6rem; margin-top: 1rem; }
|
||||
|
||||
Reference in New Issue
Block a user