feat(tradein): rebrand default product «Trade-In» → «Мера» + new mark (#1079)
All checks were successful
Deploy Trade-In / changes (push) Successful in 6s
Deploy Trade-In / test (push) Has been skipped
Deploy Trade-In / build-browser (push) Has been skipped
Deploy Trade-In / build-backend (push) Has been skipped
Deploy Trade-In / build-frontend (push) Successful in 1m40s
Deploy Trade-In / deploy (push) Successful in 44s

Ребрендинг дефолтного (не white-label) продукта «Trade-In» → «Мера» + inline-SVG логотип (буква М над размерной линией). Topbar MeraMark заменяет TI-бейдж, wordmark/крошки/футер/meta → «Мера». White-label бренды клиентов, сервисный термин «трейд-ин» в прозе OfferCard/HeroTransparency и code-идентификаторы /trade-in/ не тронуты. tsc 0 + build green.
Co-authored-by: lekss361 <lekss361@gendsgn.local>
Co-committed-by: lekss361 <lekss361@gendsgn.local>
This commit is contained in:
lekss361 2026-06-06 18:11:35 +00:00 committed by bot-reviewer
parent 3120c902c6
commit 813c4782a8
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 {