From 7fd40f6ea5e89737bc02438c2ca91d26de273ccd Mon Sep 17 00:00:00 2001 From: bot-backend Date: Thu, 16 Jul 2026 22:09:26 +0300 Subject: [PATCH] =?UTF-8?q?feat(tradein/ui):=20=D0=B2=D1=85=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=B2=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D1=83?= =?UTF-8?q?=20=D1=81=20=D1=81=D0=B0=D0=B9=D1=82=D0=B0=20=E2=80=94=20=D0=BF?= =?UTF-8?q?=D0=BB=D0=B0=D0=B2=D0=B0=D1=8E=D1=89=D0=B0=D1=8F=20=D0=BA=D0=BD?= =?UTF-8?q?=D0=BE=D0=BF=D0=BA=D0=B0=20+=20=D0=B6=D0=B8=D0=B2=D0=B0=D1=8F?= =?UTF-8?q?=20=C2=AB=D0=9F=D0=BE=D0=BC=D0=BE=D1=89=D1=8C=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Support-мост (#2526) уже работает на проде, но попасть в бота с сайта было неоткуда — клиент о нём просто не узнавал. Два входа, оба ведут в @MERAsupport_bot: - SupportButton — плавающая кнопка в правом нижнем углу, на всех экранах /v2 - «Помощь» в меню TopNav — была задизейблена с «скоро появится», теперь живая Закрывает перекос пошире: LeadForm монтируется только при hasEstimate (v2/page.tsx:1064), т.е. до расчёта оценки у клиента не было НИ ОДНОГО способа связаться. Единственная другая ссылка на связь во всём UI — NoAccessScreen.tsx:84, и та лишь на экране «доступ закончился». Решения: - Это внешняя ссылка, а не чат-виджет: бот живёт в Telegram, поэтому ни API, ни состояния, ни сокетов не нужно. - URL — module-константа, не NEXT_PUBLIC_*: env инлайнятся на build-time, так что переменная не дала бы гибкости рантайма, только лишний build-arg. Источник правды один — SUPPORT_BOT_URL в SupportButton.tsx, TopNav импортирует его. - Монтаж в v2/layout, не в глобальный app/layout: последний накрывает ещё админку /scrapers/** и /sale-share — другой продукт без бренда МЕРА. - createPortal в document.body: /v2 рисует HUD внутри артборда 1536×1024 с transform: scale(), а position:fixed внутри трансформированного предка позиционируется относительно него, а не вьюпорта — без портала кнопку унесло бы вместе с HUD. - z-index 25 — осознанно НИЖЕ всех оверлеев v2 (SectionOverlay 29/30, LocationDrawer 40/41, TopNav 50, UserMenu 200): при открытой модалке кнопка должна уходить под неё, а не воровать клики и таб-порядок. - Стиль только через tokens.ts (файл прямо запрещает хардкодить hex); готового