feat(tradein): rebrand default product "Trade-In" → "Мера" + new mark
All checks were successful
CI / changes (pull_request) Successful in 5s
CI / changes (push) Successful in 6s
CI / backend-tests (push) Has been skipped
CI / backend-tests (pull_request) Has been skipped

- Topbar: MeraMark SVG (буква М над размерной линией = «мера»/измерение),
  заменяет TI-бейдж в обоих местах (white-label fallback + дефолт)
- Topbar: дефолтный wordmark Trade-In → Мера
- trade-in.css: .brand-mark-svg sizing (22×22 в 28×28 бейдже),
  theme-aware через currentColor (работает в .brand-active)
- page.tsx: хлебная крошка + футер Trade-In → Мера
- layout.tsx: <title> + meta description → Мера

White-label бренды клиентов (praktika и пр.) не тронуты.
Сервисный термин «трейд-ин» в прозе OfferCard/HeroTransparency оставлен
как описание механики сделки, а не имя бренда.
This commit is contained in:
bot-backend 2026-06-06 21:04:34 +03:00
parent 38d948f078
commit f185e56df0
4 changed files with 21 additions and 7 deletions

View file

@ -6,8 +6,8 @@ import "./globals.css";
import { Providers } from "./providers";
export const metadata: Metadata = {
title: "Trade-In MVP — Оценка вторичного жилья",
description: "Локальная MVP-копия Trade-In Estimator (форк gendesign)",
title: "Мераоценка вторичного жилья",
description: "Мера — оценка стоимости вторичного жилья по рыночным данным",
};
export default function RootLayout({

View file

@ -175,7 +175,7 @@ export default function TradeInPage() {
<main className="page">
<div className="crumbs">
<em>Главная</em> <span></span> <em>Trade-In</em> <span></span> Новая оценка
<em>Главная</em> <span></span> <em>Мера</em> <span></span> Новая оценка
</div>
<div className="page-title">
@ -335,7 +335,7 @@ export default function TradeInPage() {
<footer className="page-foot">
<div>
Trade-In · MVP ·{" "}
Мера · MVP ·{" "}
<span className="mono">data: Avito + Cian + Yandex + Росреестр</span>
</div>
<div style={{ display: "flex", gap: 18 }}>

View file

@ -9,6 +9,19 @@ import { safeUrl } from "@/lib/safeUrl";
import { useBrand } from "@/lib/useBrand";
import { useMe } from "@/lib/useMe";
/** «Мера» mark буква М над размерной линией («мера» = измерение).
Глиф в currentColor; тёмный фон даёт CSS-бейдж .brand-mark. */
function MeraMark() {
return (
<svg viewBox="0 0 28 28" className="brand-mark-svg" aria-hidden="true" focusable="false">
{/* буква М */}
<path d="M8 16V6l6 7 6-7v10" fill="none" stroke="currentColor" strokeWidth="2" strokeLinejoin="round" strokeLinecap="round" />
{/* размерная линия под М — «мера» = измерение */}
<path d="M7 21h14M7 19.2v3.6M21 19.2v3.6" fill="none" stroke="currentColor" strokeWidth="1.4" strokeLinecap="round" />
</svg>
);
}
export type ActiveTab =
| "estimate"
| "history"
@ -115,14 +128,14 @@ export function Topbar({ active }: TopbarProps) {
/>
) : (
<>
<span className="brand-mark">TI</span>
<span className="brand-mark"><MeraMark /></span>
<span className="brand-product">{brand.name}</span>
</>
)
) : (
<>
<span className="brand-mark">TI</span>
<span className="brand-product">Trade-In</span>
<span className="brand-mark"><MeraMark /></span>
<span className="brand-product">Мера</span>
</>
)}
</div>

View file

@ -105,6 +105,7 @@
font-size: 13px;
font-weight: 600;
}
.brand-mark-svg { width: 22px; height: 22px; display: block; }
.brand-name { letter-spacing: 0.22em; }
.brand-sep { width: 1px; height: 18px; background: var(--border); margin: 0 2px; }
.brand-product {