fix(tradein/v2): пометка «В ОФФЕР» + сузить реестровую карточку (#1991) #2321
1 changed files with 51 additions and 12 deletions
|
|
@ -15,6 +15,7 @@ import type { ResultPanelData } from "./mappers";
|
||||||
const {
|
const {
|
||||||
accent,
|
accent,
|
||||||
accentDeep,
|
accentDeep,
|
||||||
|
onAccent,
|
||||||
ink,
|
ink,
|
||||||
body,
|
body,
|
||||||
body2,
|
body2,
|
||||||
|
|
@ -172,7 +173,14 @@ export default function ResultPanel({
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
display: "grid",
|
display: "grid",
|
||||||
gridTemplateColumns: "1fr 1fr 1fr",
|
// #1991 — the registry (ДКП) tile is an external anchor, not a peer
|
||||||
|
// of the two prices that actually matter (asking / expected). Equal
|
||||||
|
// 1fr columns still read as "three equivalent options" even with
|
||||||
|
// the demoted colors/type-scale below, so the two primary cards get
|
||||||
|
// ~50% more width and the registry tile narrows into a visibly
|
||||||
|
// secondary, reference-only column (closer to a convergence strip
|
||||||
|
// than a full-size card, per audit acceptance criteria).
|
||||||
|
gridTemplateColumns: "1.3fr 1.3fr 0.85fr",
|
||||||
gap: 14,
|
gap: 14,
|
||||||
flex: "0 0 auto",
|
flex: "0 0 auto",
|
||||||
}}
|
}}
|
||||||
|
|
@ -186,6 +194,8 @@ export default function ResultPanel({
|
||||||
// value so the user can't confuse it with the registry figure; the
|
// value so the user can't confuse it with the registry figure; the
|
||||||
// registry card is demoted to a softer, smaller, muted "СПРАВОЧНО"
|
// registry card is demoted to a softer, smaller, muted "СПРАВОЧНО"
|
||||||
// tile. Value scale reads expected(40) ≫ asking(30) > ДКП(28).
|
// tile. Value scale reads expected(40) ≫ asking(30) > ДКП(28).
|
||||||
|
// #1991 — column width above is the third, independent axis: asking
|
||||||
|
// and expected visually dominate the row, ДКП is narrow/secondary.
|
||||||
//
|
//
|
||||||
// H1 — when the expected card has no prediction (emptyNote), it drops
|
// H1 — when the expected card has no prediction (emptyNote), it drops
|
||||||
// to an honest empty-state and the accent frame moves onto the asking
|
// to an honest empty-state and the accent frame moves onto the asking
|
||||||
|
|
@ -232,19 +242,48 @@ export default function ResultPanel({
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
fontSize: 9.5,
|
display: "flex",
|
||||||
letterSpacing: 1.5,
|
alignItems: "flex-start",
|
||||||
// Contrast follow-up (audit #2266): accent (#2e8bff) on the
|
justifyContent: "space-between",
|
||||||
// headline card's pale infoSoftBg tint measured ≈2.87:1 — below
|
gap: 8,
|
||||||
// even the AA "large text" floor (3:1). accentDeep is the same
|
|
||||||
// brand hue, darkened (existing token, not a one-off hex) — it
|
|
||||||
// clears ~4.2:1 here, so the label reads reliably too.
|
|
||||||
color: isHeadline ? accentDeep : isRegistry ? muted2 : body2,
|
|
||||||
fontWeight: isHeadline ? 600 : undefined,
|
|
||||||
lineHeight: 1.6,
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{lines(card.title)}
|
<div
|
||||||
|
style={{
|
||||||
|
fontSize: 9.5,
|
||||||
|
letterSpacing: 1.5,
|
||||||
|
// Contrast follow-up (audit #2266): accent (#2e8bff) on the
|
||||||
|
// headline card's pale infoSoftBg tint measured ≈2.87:1 — below
|
||||||
|
// even the AA "large text" floor (3:1). accentDeep is the same
|
||||||
|
// brand hue, darkened (existing token, not a one-off hex) — it
|
||||||
|
// clears ~4.2:1 here, so the label reads reliably too.
|
||||||
|
color: isHeadline ? accentDeep : isRegistry ? muted2 : body2,
|
||||||
|
fontWeight: isHeadline ? 600 : undefined,
|
||||||
|
lineHeight: 1.6,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{lines(card.title)}
|
||||||
|
</div>
|
||||||
|
{/* #1991 — explicit "this is the figure that goes into the offer"
|
||||||
|
mark on the headline card, so the two dominant prices are not
|
||||||
|
just visually bigger but literally labelled which one to quote. */}
|
||||||
|
{isHeadline && !isEmptyCard && (
|
||||||
|
<span
|
||||||
|
style={{
|
||||||
|
flex: "0 0 auto",
|
||||||
|
fontSize: 8,
|
||||||
|
fontWeight: 700,
|
||||||
|
letterSpacing: 1,
|
||||||
|
color: onAccent,
|
||||||
|
background: accentDeep,
|
||||||
|
borderRadius: 3,
|
||||||
|
padding: "3px 6px",
|
||||||
|
whiteSpace: "nowrap",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
В ОФФЕР
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
{isRegistry && (
|
{isRegistry && (
|
||||||
<div
|
<div
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue