Show open-capacity labels, enlarge funds, move rules; WeCom on short funds.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-29 17:53:43 +08:00
parent 6081fb7e48
commit 80c561bdce
7 changed files with 399 additions and 31 deletions
+6 -28
View File
@@ -31,7 +31,6 @@ function pnlClass(n: number | null | undefined) {
export default function FundsBar() {
const [s, setS] = useState<FundsSummary | null>(null);
const [rulesOpen, setRulesOpen] = useState(false);
const load = useCallback(() => {
apiFetch<FundsSummary>("/api/funds/summary")
@@ -49,10 +48,6 @@ export default function FundsBar() {
if (!s?.ok) return null;
const rulesText = `行情 ${s.exchange || "OKX"} · ${
s.perp_inst_id || "ETH-USDT-SWAP"
} · 目标平仓(双腿/远虚只平永续) · 未达标则到期结算`;
return (
<div className="funds-bar-shell">
<div className="funds-bar-inner">
@@ -83,50 +78,33 @@ export default function FundsBar() {
: "—"}
</div>
</div>
<div className="funds-item">
<div className="funds-item funds-item--money">
<div className="funds-label"></div>
<div className="funds-value mono">{fmtU(s.total_funds)}</div>
</div>
<div className="funds-item">
<div className="funds-item funds-item--money">
<div className="funds-label"></div>
<div className="funds-value mono">{fmtU(s.funding_usdt)}</div>
</div>
<div className="funds-item">
<div className="funds-item funds-item--money">
<div className="funds-label"></div>
<div className="funds-value mono">{fmtU(s.trading_usdt)}</div>
</div>
<div className="funds-item">
<div className="funds-item funds-item--money">
<div className="funds-label"></div>
<div className="funds-value mono">{s.options_funding_label}</div>
</div>
<div className="funds-item">
<div className="funds-item funds-item--money">
<div className="funds-label"></div>
<div className="funds-value mono">{s.options_trading_label}</div>
</div>
<div className="funds-item funds-item--pnl">
<div className="funds-item funds-item--pnl funds-item--money">
<div className="funds-label"></div>
<div className={`funds-value mono ${pnlClass(s.realtime_pnl)}`}>
{s.realtime_pnl == null ? "—" : fmtU(s.realtime_pnl)}
</div>
</div>
</div>
<div className="funds-rules">
<button
type="button"
className="funds-rules-toggle"
aria-expanded={rulesOpen}
onClick={() => setRulesOpen((v) => !v)}
>
<span></span>
<span className="funds-rules-chevron" aria-hidden>
{rulesOpen ? "▾" : "▸"}
</span>
</button>
{rulesOpen ? (
<p className="funds-rules-body meta">{rulesText}</p>
) : null}
</div>
</div>
</div>
);