From a39b1d8698075d294b32025631d548aeda070279 Mon Sep 17 00:00:00 2001 From: YoVinchen Date: Sat, 22 Nov 2025 18:44:35 +0800 Subject: [PATCH] refactor(usage): improve footer layout with two-row design Reorganize usage footer for better readability and space efficiency. - Split into two rows: update time + refresh button (row 1), usage stats (row 2) - Move refresh button to top row next to update time - Remove card background for cleaner look - Add fallback text when never updated - Improve spacing and alignment - Format template literals for consistency --- src/components/UsageFooter.tsx | 121 ++++++++++++++++++--------------- 1 file changed, 65 insertions(+), 56 deletions(-) diff --git a/src/components/UsageFooter.tsx b/src/components/UsageFooter.tsx index 1909901..6f103bd 100644 --- a/src/components/UsageFooter.tsx +++ b/src/components/UsageFooter.tsx @@ -110,62 +110,72 @@ const UsageFooter: React.FC = ({ const isExpired = firstUsage.isValid === false; return ( -
- {/* 上次查询时间 */} - {lastQueriedAt && ( +
+ {/* 第一行:更新时间和刷新按钮 */} +
+ {/* 上次查询时间 */} - {formatRelativeTime(lastQueriedAt, now, t)} + {lastQueriedAt + ? formatRelativeTime(lastQueriedAt, now, t) + : t("usage.never", { defaultValue: "从未更新" })} - )} - {/* 已用 */} - {firstUsage.used !== undefined && ( - - {t("usage.used")} - - {firstUsage.used.toFixed(2)} - - - )} + {/* 刷新按钮 */} + +
- {/* 剩余 */} - {firstUsage.remaining !== undefined && ( - - - {t("usage.remaining")} - - + {/* 已用 */} + {firstUsage.used !== undefined && ( +
+ + {t("usage.used")} + + + {firstUsage.used.toFixed(2)} + +
+ )} + + {/* 剩余 */} + {firstUsage.remaining !== undefined && ( +
+ + {t("usage.remaining")} + + - {firstUsage.remaining.toFixed(2)} + ? "text-orange-500 dark:text-orange-400" + : "text-green-600 dark:text-green-400" + }`} + > + {firstUsage.remaining.toFixed(2)} + +
+ )} + + {/* 单位 */} + {firstUsage.unit && ( + + {firstUsage.unit} -
- )} - - {/* 单位 */} - {firstUsage.unit && ( - - {firstUsage.unit} - - )} - - {/* 刷新按钮 */} - + )} +
); } @@ -300,13 +310,12 @@ const UsagePlanItem: React.FC<{ data: UsageData }> = ({ data }) => { {t("usage.remaining")} {remaining.toFixed(2)}