-
+
+
-
${escapeStatsHtml(dayLabel)}
+
${escapeStatsHtml(dayLabel)}
`;
}).join('');
@@ -130,8 +130,8 @@ function renderStatsActivity(days: ArchiveStatsDay[]): void {
const totalCount = days.reduce((s, d) => s + d.count, 0);
const totalBytes = days.reduce((s, d) => s + d.bytes, 0);
applyHtml(container, `
-
${bars}
-
${escapeStatsHtml(UI_TEXT.static.statsActivitySummary
+
${bars}
+
${escapeStatsHtml(UI_TEXT.static.statsActivitySummary
.replace('{count}', String(totalCount))
.replace('{size}', formatBytesForStats(totalBytes)))}
`);
diff --git a/src/styles.css b/src/styles.css
index b185b40..f9086b5 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -2311,6 +2311,56 @@ select option {
pointer-events: none;
}
+/* 30-day activity chart — vertical bar per day with optional date
+ label below every 7th column. */
+.stats-activity-row {
+ display: flex;
+ gap: 2px;
+ align-items: flex-end;
+ padding: 6px 0;
+}
+
+.stats-day-col {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 4px;
+ min-width: 0;
+}
+
+.stats-day-bar-track {
+ width: 100%;
+ height: 90px;
+ display: flex;
+ align-items: flex-end;
+}
+
+.stats-day-bar-fill {
+ width: 100%;
+ background: var(--accent, #9146ff);
+ border-radius: 2px 2px 0 0;
+ transition: height 0.3s ease-out, background 0.2s;
+}
+
+.stats-day-bar-fill:hover {
+ background: var(--accent-hover, #b97aff);
+}
+
+.stats-day-label {
+ font-size: 9px;
+ color: var(--text-secondary);
+ white-space: nowrap;
+ font-variant-numeric: tabular-nums;
+}
+
+.stats-activity-summary {
+ font-size: 12px;
+ color: var(--text-secondary);
+ margin-top: 6px;
+ font-variant-numeric: tabular-nums;
+}
+
/* Old generic scrollbar rules were dead — superseded by the
purple-themed *::-webkit-scrollbar block further down the file.
Removed to avoid confusion when someone greps for scrollbar styles. */