Add quality-aware release picker modal
This commit is contained in:
+121
-11
@@ -2239,10 +2239,8 @@ button:disabled,
|
||||
}
|
||||
|
||||
.request-journey { display: grid; gap: 18px; padding: 20px; }
|
||||
.request-journey-heading,
|
||||
.request-release-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
|
||||
.request-journey-heading h2,
|
||||
.request-release-heading h3 { font-size: clamp(1.3rem, 2.2vw, 2rem); letter-spacing: -0.03em; }
|
||||
.request-journey-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
|
||||
.request-journey-heading h2 { font-size: clamp(1.3rem, 2.2vw, 2rem); letter-spacing: -0.03em; }
|
||||
.request-live-indicator {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
@@ -2326,12 +2324,121 @@ button:disabled,
|
||||
.request-stage-actions button { width: 100%; padding-inline: 10px; font-size: 0.7rem; }
|
||||
.request-stage-link { margin-top: auto; color: var(--request-green) !important; font-weight: 750; }
|
||||
|
||||
.request-release-picker { display: grid; gap: 14px; padding: 16px; border: 1px solid rgba(126, 215, 255, 0.28); border-radius: var(--ops-radius-lg); background: rgba(14, 165, 233, 0.06); }
|
||||
.request-release-list { display: grid; gap: 8px; }
|
||||
.request-release { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 12px; border: 1px solid var(--ops-line-soft); border-radius: var(--ops-radius); background: rgba(255, 255, 255, 0.025); }
|
||||
.request-release > div { display: grid; gap: 4px; min-width: 0; }
|
||||
.request-release strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
||||
.request-release span { color: var(--ops-muted); font-size: 0.74rem; }
|
||||
.request-release-modal-layer {
|
||||
position: fixed;
|
||||
z-index: 1200;
|
||||
inset: 0;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
padding: max(18px, 4vh) 18px;
|
||||
}
|
||||
.request-release-modal-backdrop {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
background: rgba(2, 6, 18, 0.82);
|
||||
backdrop-filter: blur(8px);
|
||||
cursor: default;
|
||||
}
|
||||
.request-release-modal {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: grid;
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
width: min(980px, 100%);
|
||||
max-height: min(820px, 92vh);
|
||||
overflow: hidden;
|
||||
border: 1px solid rgba(126, 215, 255, 0.42);
|
||||
border-radius: var(--ops-radius-lg);
|
||||
background: linear-gradient(145deg, rgba(19, 29, 48, 0.99), rgba(9, 15, 29, 0.99));
|
||||
box-shadow: 0 34px 100px rgba(0, 0, 0, 0.68), inset 0 2px 0 rgba(126, 215, 255, 0.72);
|
||||
}
|
||||
.request-release-modal-header {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: 20px;
|
||||
padding: 20px;
|
||||
border-bottom: 1px solid var(--ops-line);
|
||||
background: rgba(13, 21, 39, 0.96);
|
||||
}
|
||||
.request-release-modal-header > div { display: grid; gap: 5px; }
|
||||
.request-release-modal-header h2 { margin: 0; font-size: clamp(1.35rem, 3vw, 2rem); }
|
||||
.request-release-modal-header p { margin: 0; color: var(--ops-muted); font-size: 0.8rem; }
|
||||
.request-release-modal-body { display: grid; gap: 12px; min-height: 0; padding: 16px; overflow: auto; }
|
||||
.request-release-list { display: grid; gap: 9px; }
|
||||
.request-release {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
padding: 14px;
|
||||
border: 1px solid var(--ops-line-soft);
|
||||
border-radius: var(--ops-radius);
|
||||
background: rgba(255, 255, 255, 0.025);
|
||||
}
|
||||
.request-release.is-best-pick {
|
||||
border-color: rgba(72, 224, 178, 0.48);
|
||||
background: linear-gradient(135deg, rgba(72, 224, 178, 0.13), rgba(14, 165, 233, 0.06));
|
||||
box-shadow: inset 3px 0 0 var(--request-green);
|
||||
}
|
||||
.request-release-copy { display: grid; gap: 5px; min-width: 0; }
|
||||
.request-release-copy > strong { overflow: hidden; color: var(--ops-text); text-overflow: ellipsis; white-space: nowrap; }
|
||||
.request-release-copy > span,
|
||||
.request-release-copy > small { color: var(--ops-muted); font-size: 0.72rem; line-height: 1.4; }
|
||||
.request-release-copy > small { color: #a8cfc6; }
|
||||
.request-release-badges { display: flex; flex-wrap: wrap; gap: 6px; }
|
||||
.request-release-badges > span {
|
||||
padding: 3px 7px;
|
||||
border: 1px solid rgba(126, 215, 255, 0.22);
|
||||
border-radius: 999px;
|
||||
color: #b7dff2;
|
||||
font-family: "JetBrains Mono", Consolas, monospace;
|
||||
font-size: 0.61rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.request-release-badges > .request-release-best-badge {
|
||||
border-color: rgba(72, 224, 178, 0.48);
|
||||
background: rgba(72, 224, 178, 0.12);
|
||||
color: var(--request-green);
|
||||
}
|
||||
.request-release-profile-note,
|
||||
.request-release-empty,
|
||||
.request-release-searching {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
padding: 14px;
|
||||
border: 1px solid rgba(126, 215, 255, 0.24);
|
||||
border-radius: var(--ops-radius);
|
||||
background: rgba(14, 165, 233, 0.065);
|
||||
}
|
||||
.request-release-profile-note,
|
||||
.request-release-empty { display: grid; gap: 4px; }
|
||||
.request-release-profile-note strong,
|
||||
.request-release-empty strong,
|
||||
.request-release-searching strong { color: var(--ops-text); font-size: 0.82rem; }
|
||||
.request-release-profile-note span,
|
||||
.request-release-empty span,
|
||||
.request-release-searching span { color: var(--ops-muted); font-size: 0.75rem; line-height: 1.45; }
|
||||
.request-release-empty { min-height: 150px; align-content: center; justify-items: center; text-align: center; }
|
||||
.request-release-empty.is-error { border-color: rgba(255, 112, 131, 0.36); background: rgba(255, 112, 131, 0.07); }
|
||||
.request-release-searching > i {
|
||||
flex: 0 0 16px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: 2px solid rgba(126, 215, 255, 0.22);
|
||||
border-top-color: var(--request-cyan);
|
||||
border-radius: 50%;
|
||||
animation: request-release-spin 0.8s linear infinite;
|
||||
}
|
||||
.request-release-searching > div { display: grid; gap: 3px; }
|
||||
@keyframes request-release-spin { to { transform: rotate(360deg); } }
|
||||
|
||||
.request-advanced { overflow: hidden; }
|
||||
.request-advanced-toggle { display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%; padding: 16px 18px; border: 0; border-radius: 0; background: transparent; color: var(--ops-text); text-align: left; }
|
||||
@@ -2357,7 +2464,6 @@ button:disabled,
|
||||
.request-journey,
|
||||
.request-overview-block { padding: 15px; }
|
||||
.request-journey-heading,
|
||||
.request-release-heading { align-items: flex-start; flex-direction: column; }
|
||||
.request-release { grid-template-columns: 1fr; }
|
||||
.request-live-indicator { align-self: flex-start; }
|
||||
.request-diagnostics-grid { grid-template-columns: 1fr; }
|
||||
@@ -2367,6 +2473,10 @@ button:disabled,
|
||||
.request-watch-button { width: 100%; min-width: 0; }
|
||||
.request-action-row button,
|
||||
.request-release button { width: 100%; }
|
||||
.request-release-modal-layer { padding: 10px; }
|
||||
.request-release-modal { max-height: 94vh; }
|
||||
.request-release-modal-header { padding: 16px; }
|
||||
.request-release-modal-body { padding: 12px; }
|
||||
.request-operation-heading { align-items: flex-start; flex-direction: column; }
|
||||
.request-repair-heading { flex-direction: column; }
|
||||
.request-repair-meta { justify-items: start; }
|
||||
|
||||
Reference in New Issue
Block a user