Skip to content

Commit 9ca4bae

Browse files
linhayCopilot
andcommitted
feat(codex): 账号卡片 UI 优化 — 模型映射固定高度、拖动按钮移位、延迟单位换算、路由策略区域可见、跨卡片 subgrid 对齐
- 模型映射区固定 h-[4.5rem] 默认展示前 2 条 - 拖动按钮移至 AttributionCard 左上角 (leadingAction prop) - formatLatencyMetric: ≥1000ms 显示 X.X S,否则显示 XXX MS - grid row 3 改 auto,customBody wrapper 加 shrink-0,确保路由策略区完整露出 - chart section: py-4→py-3, min-h-[8.5rem]→min-h-[6rem], h-[5.5rem]→h-[4rem], mb-2→mb-1 卡片高度从 880px 降至 835px,路由策略按钮完整在视口内 - xl (≥1280px) 3 列布局使用 CSS Grid subgrid: auto-rows-auto + gap-x-4/gap-y-0 + row-span-6 + grid-rows-[subgrid] 使 header/chart/stats/quota/evidence/customBody 六区域跨三卡片完美对齐 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 392b559 commit 9ca4bae

3 files changed

Lines changed: 7 additions & 7 deletions

File tree

frontend/src/features/accounts/components/AttributionCard.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ export default function AttributionCard({
147147

148148
{showAttribution ? (
149149
<>
150-
<section className="grid grid-cols-[5.75rem_minmax(0,1fr)] gap-3 border-b border-dashed border-[var(--border-color)] px-4 py-4">
151-
<div className="flex min-h-[8.5rem] flex-col justify-between">
150+
<section className="grid grid-cols-[5.75rem_minmax(0,1fr)] gap-3 border-b border-dashed border-[var(--border-color)] px-4 py-3">
151+
<div className="flex min-h-[6rem] flex-col justify-between">
152152
<div className="font-mono text-[0.5625rem] font-black uppercase tracking-[0.18em] text-[var(--text-muted)]">
153153
{t('accounts.recent_requests')}
154154
</div>
@@ -161,13 +161,13 @@ export default function AttributionCard({
161161
</div>
162162

163163
<div className="min-w-0 border-l-2 border-[var(--border-color)] pl-3">
164-
<div className="mb-2 grid grid-cols-3 gap-2">
164+
<div className="mb-1 grid grid-cols-3 gap-2">
165165
<FlowHeadCell label={t('accounts.attribution_window')} value={formatTokenMetric(flow.windowTokens)} />
166166
<FlowHeadCell label={t('accounts.attribution_peak')} value={formatTokenMetric(flow.peakTokens)} />
167167
<FlowHeadCell label={t('accounts.attribution_now')} value={formatTokenMetric(flow.currentTokens)} />
168168
</div>
169169
<div
170-
className="relative h-[5.5rem] overflow-hidden border border-[var(--border-color)] bg-[var(--bg-surface)]"
170+
className="relative h-[4rem] overflow-hidden border border-[var(--border-color)] bg-[var(--bg-surface)]"
171171
style={{
172172
backgroundImage:
173173
'linear-gradient(to right, color-mix(in srgb, var(--border-color) 12%, transparent) 1px, transparent 1px), linear-gradient(to bottom, color-mix(in srgb, var(--border-color) 10%, transparent) 1px, transparent 1px)',

frontend/src/features/codex/components/CodexAccountOrderRow.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ export function AccountOrderRow({
130130
onDragOver={onDragOver}
131131
onDragEnter={() => onDragEnter(row.id)}
132132
onDrop={onDrop}
133-
className={dragged ? 'opacity-40 grayscale' : probeHit ? 'outline outline-2 outline-offset-2 outline-[var(--text-primary)]' : ''}
133+
className={`${density !== 'compact' ? 'xl:row-span-6 xl:grid xl:grid-rows-[subgrid]' : ''} ${dragged ? 'opacity-40 grayscale' : probeHit ? 'outline outline-2 outline-offset-2 outline-[var(--text-primary)]' : ''}`.trim()}
134134
>
135135
<AttributionCard
136136
t={t}
@@ -143,7 +143,7 @@ export function AccountOrderRow({
143143
evidenceRows={evidenceRows}
144144
tone={cardTone}
145145
density={density}
146-
className={policyMuted && !probeHit ? 'opacity-75 grayscale' : ''}
146+
className={`${density !== 'compact' ? 'xl:row-span-6 xl:grid xl:grid-rows-[subgrid] xl:h-auto' : ''} ${policyMuted && !probeHit ? 'opacity-75 grayscale' : ''}`.trim()}
147147
style={density === 'compact' ? { minHeight: '28rem' } : { minHeight: '48rem' }}
148148
leadingAction={
149149
<div

frontend/src/features/codex/components/CodexAccountOrderSection.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ export function CodexAccountOrderSection({
162162
content = <EmptyState>{emptyLabel}</EmptyState>;
163163
} else {
164164
content = (
165-
<div className="grid auto-rows-fr gap-4 p-4 xl:grid-cols-3">
165+
<div className="grid auto-rows-fr gap-4 p-4 xl:auto-rows-auto xl:grid-cols-3 xl:gap-x-4 xl:gap-y-0">
166166
{rows.map((row, index) => (
167167
<AccountOrderRow
168168
key={row.id}

0 commit comments

Comments
 (0)