<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Deployment Records Table</title>
<style>
:root {
color-scheme: light;
--page: #f3f5f7;
--surface: #ffffff;
--surface-soft: #fafbfc;
--line: #dfe4ea;
--line-strong: #cbd3dc;
--text: #202936;
--muted: #697586;
--subtle: #8792a1;
--blue: #2468b1;
--blue-soft: #eaf3ff;
--blue-line: #a9c8ec;
--hover: #f4f7fa;
--success-bg: #eef8f1;
--success-line: #b8dcc2;
--success-text: #216b3d;
--warn-bg: #fff7e7;
--warn-line: #e8cf93;
--warn-text: #895b09;
--fail-bg: #fff0f0;
--fail-line: #e6b8b8;
--fail-text: #9b3131;
--running-bg: #eff4ff;
--running-line: #b7caed;
--running-text: #285c9c;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
display: grid;
place-items: center;
padding: 64px 40px;
background: var(--page);
color: var(--text);
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
font-size: 13px;
line-height: 1.35;
}
.table-card {
width: min(1050px, 100%);
background: var(--surface);
border: 1px solid var(--line);
border-radius: 9px;
box-shadow: 0 2px 7px rgba(24, 36, 49, 0.055);
overflow: hidden;
}
.table-heading {
min-height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
padding: 15px 20px 14px;
border-bottom: 1px solid var(--line);
}
.heading-copy {
min-width: 0;
}
h1 {
margin: 0;
color: #17202b;
font-size: 15px;
font-weight: 650;
letter-spacing: -0.01em;
}
.heading-meta {
margin: 3px 0 0;
color: var(--muted);
font-size: 12px;
}
.record-count {
flex: 0 0 auto;
display: inline-flex;
align-items: center;
min-height: 26px;
padding: 0 9px;
color: #526172;
background: #f5f7f9;
border: 1px solid var(--line);
border-radius: 5px;
font-size: 12px;
font-weight: 550;
}
.table-wrap {
overflow-x: auto;
}
table {
width: 100%;
min-width: 820px;
border-collapse: separate;
border-spacing: 0;
table-layout: fixed;
}
col.status { width: 140px; }
col.service { width: 220px; }
col.region { width: 140px; }
col.deployer { width: 165px; }
col.duration { width: 112px; }
col.timestamp { width: auto; }
thead th {
height: 39px;
padding: 0 16px;
background: var(--surface-soft);
border-bottom: 1px solid var(--line);
color: #667384;
text-align: left;
text-transform: uppercase;
font-size: 10.5px;
font-weight: 700;
letter-spacing: 0.055em;
white-space: nowrap;
}
thead th:first-child,
tbody td:first-child { padding-left: 20px; }
thead th:last-child,
tbody td:last-child { padding-right: 20px; }
.sortable {
background: #f5f8fb;
color: #45586c;
}
.sort-label {
display: inline-flex;
align-items: center;
gap: 6px;
}
.sort-arrow {
width: 12px;
height: 12px;
color: var(--blue);
}
tbody tr {
height: 49px;
background: var(--surface);
}
tbody tr + tr td {
border-top: 1px solid #e9edf1;
}
tbody td {
padding: 0 16px;
color: #344252;
vertical-align: middle;
white-space: nowrap;
}
tbody tr.hovered td {
background: var(--hover);
}
tbody tr.hovered td:first-child {
box-shadow: inset 3px 0 0 #aab7c5;
}
tbody tr.selected td {
background: var(--blue-soft);
border-top-color: var(--blue-line);
border-bottom: 1px solid var(--blue-line);
}
tbody tr.selected + tr td {
border-top-color: transparent;
}
tbody tr.selected td:first-child {
box-shadow: inset 3px 0 0 var(--blue);
}
tbody tr:hover td {
background: #f2f6fa;
}
tbody tr.selected:hover td {
background: #e5f1ff;
}
.status-badge {
display: inline-flex;
align-items: center;
gap: 6px;
min-width: 82px;
min-height: 24px;
padding: 3px 8px 3px 6px;
border: 1px solid;
border-radius: 5px;
font-size: 11.5px;
font-weight: 650;
line-height: 1;
}
.status-badge svg {
width: 13px;
height: 13px;
flex: 0 0 auto;
stroke-width: 2.25;
}
.success {
color: var(--success-text);
background: var(--success-bg);
border-color: var(--success-line);
}
.warning {
color: var(--warn-text);
background: var(--warn-bg);
border-color: var(--warn-line);
}
.failed {
color: var(--fail-text);
background: var(--fail-bg);
border-color: var(--fail-line);
}
.running {
color: var(--running-text);
background: var(--running-bg);
border-color: var(--running-line);
}
.service-name {
color: #273545;
font-weight: 620;
}
.region-code,
.duration,
time {
color: #516071;
font-variant-numeric: tabular-nums;
}
.deployer {
display: inline-flex;
align-items: center;
gap: 8px;
}
.avatar {
width: 23px;
height: 23px;
display: inline-grid;
place-items: center;
border: 1px solid #cfd8e1;
border-radius: 50%;
background: #eef2f6;
color: #526374;
font-size: 9px;
font-weight: 750;
letter-spacing: 0.01em;
}
.selected .avatar {
background: #d9eaff;
border-color: #a9c9ec;
color: #275e9e;
}
.timestamp-cell {
color: #526172;
}
.selection-note {
display: inline-flex;
align-items: center;
gap: 5px;
margin-left: 8px;
color: #2766a7;
font-size: 10.5px;
font-weight: 650;
vertical-align: middle;
}
.selection-note svg {
width: 12px;
height: 12px;
}
.table-footer {
display: flex;
align-items: center;
justify-content: space-between;
min-height: 42px;
padding: 0 20px;
border-top: 1px solid var(--line);
background: #fbfcfd;
color: var(--muted);
font-size: 11.5px;
}
.key {
display: flex;
align-items: center;
gap: 14px;
}
.key-item {
display: inline-flex;
align-items: center;
gap: 5px;
}
.key-swatch {
width: 12px;
height: 12px;
border: 1px solid var(--line-strong);
border-radius: 3px;
background: var(--hover);
}
.key-swatch.selected-key {
background: var(--blue-soft);
border-color: var(--blue-line);
box-shadow: inset 2px 0 0 var(--blue);
}
.page-label {
font-variant-numeric: tabular-nums;
}
</style>
</head>
<body>
<main class="table-card" aria-labelledby="deployment-title">
<header class="table-heading">
<div class="heading-copy">
<h1 id="deployment-title">Deployment records</h1>
<p class="heading-meta">Production environment · Latest deployment activity</p>
</div>
<div class="record-count" aria-label="8 deployment records">8 records</div>
</header>
<div class="table-wrap">
<table aria-label="Server deployment records">
<colgroup>
<col class="status">
<col class="service">
<col class="region">
<col class="deployer">
<col class="duration">
<col class="timestamp">
</colgroup>
<thead>
<tr>
<th scope="col">Status</th>
<th scope="col">Service name</th>
<th scope="col">Region</th>
<th scope="col">Deployed by</th>
<th scope="col">Duration</th>
<th scope="col" class="sortable" aria-sort="descending">
<span class="sort-label">
Timestamp
<svg class="sort-arrow" viewBox="0 0 16 16" aria-hidden="true" fill="none">
<path d="M8 3.25v8.5M4.75 8.5 8 11.75 11.25 8.5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<span class="status-badge success">
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="m3.2 8.1 3.05 3.05L12.8 4.6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/></svg>
Succeeded
</span>
</td>
<td><span class="service-name">checkout-api</span></td>
<td><span class="region-code">us-east-1</span></td>
<td><span class="deployer"><span class="avatar">MC</span>Maya Chen</span></td>
<td><span class="duration">2m 14s</span></td>
<td class="timestamp-cell"><time datetime="2025-03-08T14:32:00Z">Mar 08, 2025 · 14:32 UTC</time></td>
</tr>
<tr>
<td>
<span class="status-badge running">
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><circle cx="8" cy="8" r="5.15" stroke="currentColor"/><path d="M8 5.1v3.2l2.15 1.35" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/></svg>
Running
</span>
</td>
<td><span class="service-name">notifications-worker</span></td>
<td><span class="region-code">eu-west-1</span></td>
<td><span class="deployer"><span class="avatar">AO</span>Andre Oliveira</span></td>
<td><span class="duration">4m 08s</span></td>
<td class="timestamp-cell"><time datetime="2025-03-08T14:27:00Z">Mar 08, 2025 · 14:27 UTC</time></td>
</tr>
<tr>
<td>
<span class="status-badge warning">
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M8 2.5 14 13H2L8 2.5Z" stroke="currentColor" stroke-linejoin="round"/><path d="M8 5.7v3.65M8 11.35v.1" stroke="currentColor" stroke-linecap="round"/></svg>
Warning
</span>
</td>
<td><span class="service-name">catalog-search</span></td>
<td><span class="region-code">us-west-2</span></td>
<td><span class="deployer"><span class="avatar">JP</span>Jordan Park</span></td>
<td><span class="duration">3m 41s</span></td>
<td class="timestamp-cell"><time datetime="2025-03-08T14:18:00Z">Mar 08, 2025 · 14:18 UTC</time></td>
</tr>
<tr class="hovered">
<td>
<span class="status-badge success">
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="m3.2 8.1 3.05 3.05L12.8 4.6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/></svg>
Succeeded
</span>
</td>
<td><span class="service-name">identity-gateway</span></td>
<td><span class="region-code">ap-southeast-2</span></td>
<td><span class="deployer"><span class="avatar">SL</span>Sofia Lin</span></td>
<td><span class="duration">1m 56s</span></td>
<td class="timestamp-cell"><time datetime="2025-03-08T14:06:00Z">Mar 08, 2025 · 14:06 UTC</time></td>
</tr>
<tr>
<td>
<span class="status-badge failed">
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><circle cx="8" cy="8" r="5.2" stroke="currentColor"/><path d="m5.9 5.9 4.2 4.2m0-4.2-4.2 4.2" stroke="currentColor" stroke-linecap="round"/></svg>
Failed
</span>
</td>
<td><span class="service-name">billing-events</span></td>
<td><span class="region-code">eu-central-1</span></td>
<td><span class="deployer"><span class="avatar">RB</span>Ravi Bhat</span></td>
<td><span class="duration">0m 47s</span></td>
<td class="timestamp-cell"><time datetime="2025-03-08T13:54:00Z">Mar 08, 2025 · 13:54 UTC</time></td>
</tr>
<tr class="selected" aria-selected="true">
<td>
<span class="status-badge success">
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="m3.2 8.1 3.05 3.05L12.8 4.6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/></svg>
Succeeded
</span>
</td>
<td>
<span class="service-name">customer-profile</span>
<span class="selection-note">
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="m3.2 8.1 3.05 3.05L12.8 4.6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
Selected
</span>
</td>
<td><span class="region-code">us-east-1</span></td>
<td><span class="deployer"><span class="avatar">MC</span>Maya Chen</span></td>
<td><span class="duration">2m 32s</span></td>
<td class="timestamp-cell"><time datetime="2025-03-08T13:38:00Z">Mar 08, 2025 · 13:38 UTC</time></td>
</tr>
<tr>
<td>
<span class="status-badge success">
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="m3.2 8.1 3.05 3.05L12.8 4.6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/></svg>
Succeeded
</span>
</td>
<td><span class="service-name">media-processor</span></td>
<td><span class="region-code">ap-northeast-1</span></td>
<td><span class="deployer"><span class="avatar">DK</span>Devon King</span></td>
<td><span class="duration">5m 19s</span></td>
<td class="timestamp-cell"><time datetime="2025-03-08T13:21:00Z">Mar 08, 2025 · 13:21 UTC</time></td>
</tr>
<tr>
<td>
<span class="status-badge success">
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="m3.2 8.1 3.05 3.05L12.8 4.6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/></svg>
Succeeded
</span>
</td>
<td><span class="service-name">reporting-export</span></td>
<td><span class="region-code">us-west-2</span></td>
<td><span class="deployer"><span class="avatar">SL</span>Sofia Lin</span></td>
<td><span class="duration">2m 08s</span></td>
<td class="timestamp-cell"><time datetime="2025-03-08T13:05:00Z">Mar 08, 2025 · 13:05 UTC</time></td>
</tr>
</tbody>
</table>
</div>
<footer class="table-footer">
<div class="key" aria-label="Table state legend">
<span class="key-item"><span class="key-swatch" aria-hidden="true"></span>Hover state</span>
<span class="key-item"><span class="key-swatch selected-key" aria-hidden="true"></span>Selected row</span>
</div>
<span class="page-label">Showing 1–8 of 8</span>
</footer>
</main>
</body>
</html>