+
+
网络
+
+ ↓{{ formatRate(containerNetRate.down_bps) }}
+ ↑{{ formatRate(containerNetRate.up_bps) }}
-
- 存储
-
- {{ formatBytes(projectStorage.used_bytes) }}
-
- / {{ formatBytes(projectStorage.limit_bytes) }}
-
-
-
- {{ projectStorage.usage_percent.toFixed(1) }}%
-
+
+
+
存储
+
+ {{ formatBytes(projectStorage.used_bytes) }}
+
+ / {{ formatBytes(projectStorage.limit_bytes) }}
+
+
+
diff --git a/static/style.css b/static/style.css
index 0215a24..34209ff 100644
--- a/static/style.css
+++ b/static/style.css
@@ -2430,6 +2430,128 @@ o-files {
gap: 24px;
}
+.usage-dashboard {
+ position: relative;
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ grid-auto-rows: auto;
+ column-gap: 48px;
+ row-gap: 32px;
+ padding: 8px 0;
+}
+
+.usage-dashboard::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 50%;
+ width: 1px;
+ background: var(--claude-border);
+ transform: translateX(-0.5px);
+ pointer-events: none;
+ z-index: 0;
+}
+
+.usage-cell {
+ display: flex;
+ flex-direction: column;
+ gap: 16px;
+ position: relative;
+ z-index: 1;
+}
+
+.usage-dashboard .panel-card {
+ border-left: none;
+ padding: 0;
+}
+
+.usage-cell--left {
+ padding-right: 24px;
+}
+
+.usage-cell--right {
+ padding-left: 24px;
+}
+
+.usage-title {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: 14px;
+ font-weight: 600;
+ color: var(--claude-text);
+}
+
+.stat-grid {
+ display: grid;
+ gap: 12px;
+}
+
+.stat-grid--triple {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+}
+
+.stat-grid--double {
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+}
+
+.stat-block {
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+}
+
+.stat-label {
+ color: var(--claude-text-secondary);
+ font-size: 12px;
+ letter-spacing: 0.04em;
+}
+
+.stat-value {
+ font-weight: 600;
+ font-size: 18px;
+ font-variant-numeric: tabular-nums;
+ color: var(--claude-text);
+}
+
+.stat-value--accent {
+ color: var(--claude-accent);
+ font-size: 20px;
+}
+
+.stat-value--success {
+ color: var(--claude-success);
+}
+
+.stat-value--warning {
+ color: var(--claude-warning);
+}
+
+.stat-value--mono {
+ font-family: 'SF Mono', 'Monaco', 'Consolas', monospace;
+ font-size: 16px;
+}
+
+.stat-meta,
+.stat-foot {
+ font-size: 12px;
+ color: var(--claude-text-secondary);
+}
+
+.stat-meta {
+ text-transform: none;
+}
+
+.stat-foot {
+ margin-top: 2px;
+}
+
+.usage-placeholder {
+ font-size: 13px;
+ color: var(--claude-text-secondary);
+}
+
.panel-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
@@ -2662,6 +2784,25 @@ o-files {
gap: 16px;
}
+ .usage-dashboard {
+ grid-template-columns: 1fr;
+ row-gap: 20px;
+ padding: 0;
+ }
+
+ .usage-dashboard::before {
+ display: none;
+ }
+
+ .usage-cell--left,
+ .usage-cell--right {
+ padding: 0;
+ }
+
+ .stat-grid--triple {
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
+ }
+
.token-item {
min-width: auto;
}