Показує абітурієнту рекламний промо-кейс (банер-зображення з кнопкою-переходом) на сторінці результату веб-калькулятора — після того, як він порахував конкурсний бал. Контент промо редагується нетехнічною командою у Strapi (content-type calculator-adv-cases), без релізу фронтенду. У проді живий один кейс — промо спеціальності «Фізика та астрономія» (звідси внутрішня назва компонента PromotePhysics), редірект веде на блог-статтю.
Точка входу: https://abitly.org/uk/calculator (live, HTTP 200; /calculator → 307 на /uk/calculator).
Користувач відкриває калькулятор і вводить оцінки/предмети.
Після розрахунку рендериться блок результату (BetterThanCards).
Якщо feature-флаг NEXT_PUBLIC_DISABLE_PROMOTIONSне заданий (=== undefined) і у Strapi є опублікований calculator-adv-cases, у блоці показується промо-картка PromotePhysics (зображення з кліком).
Клік по промо → track('popup_click_details', …) (подія Track-events) і відкриття redirect-URL у новій вкладці.
Feature-флаг NEXT_PUBLIC_DISABLE_PROMOTIONS: промо рендериться лише коли env-змінна не задана (=== undefined); будь-яке значення (навіть "false") вимикає промо. Стан змінної у prod SSM (/abitly/prod/frontend/) не підтверджено — TODO: перевірити фактичне значення.
Не верифіковано live curl-ом: промо з’являється тільки в інтерактивному стані (після вводу оцінок і розрахунку), тому статичний запит сторінки його не показує. Підтвердження потребує /browse або відомого значення флага. Тому статус 🚧, а не 🟢.
Залежність від контенту: без опублікованого calculator-adv-cases у Strapi промо не показується (if (!advCase) return null). Зараз 1 запис опубліковано — підтверджено через публічний REST 2026-06-14.
Dedupe-варіант:PromotionPopup (Dialog) має логіку «показано один раз» через localStorage.shownPromotions, але активний шлях у main — PromotePhysics (без dedupe). Чи рендериться сам PromotionPopup у проді — TODO:.