fix(tradein/v2): пометка «В ОФФЕР» + сузить реестровую карточку (#1991)
All checks were successful
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 12s
CI / changes (pull_request) Successful in 13s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 1m0s
All checks were successful
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 12s
CI / changes (pull_request) Successful in 13s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 1m0s
После #2266/#2312 иерархия 3 цен уже разведена по размеру/весу (Avito IMV вынесен из hero целиком в отдельную аналитику). Оставшийся геп из #1991: - ДКП·Росреестр карточка занимала равную с двумя ценовыми ширину сетки (1fr/1fr/1fr) несмотря на приглушённый стиль — теперь 1.3fr/1.3fr/0.85fr, две главные цены доминируют, реестровая карточка визуально вторична. - Добавлена явная пометка «В ОФФЕР» на карточке ожидаемой цены сделки (скрыта в H1 empty-state, где акцентная рамка переезжает на asking-карточку). Refs #1991
This commit is contained in:
parent
bc9549782b
commit
417cbb7c20
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