The 推广收益 detail card no longer renders the QR code as its own row. The
card becomes a fixed-label info list: 推广链接 [Url][复制链接][推广海报] /
佣金比例 / 累计佣金 / 返佣详解, mirroring the reference theme's 推广中心 card.
- profile-revenue.php: QR row removed; poster button moved into the link row and
gated server-side on the poster switch; copy label now 复制链接; 推广人数 row
dropped; 返佣详解 heading reads the existing pay_rebate_text_details_title;
dead $vip_ratios, aksrt-revenue-page class and data-min-amount removed
- new affiliate-poster-modal.php: poster previews in a modal before download
(reuses .uc-modal + single-render guard), since the QR now only exists inside
the poster
- credits.js: renderAffiliateQr and its call deleted, along with the dead
[data-affiliate-payers] lookup and the inline ch-width hack; initAffiliatePoster
builds the poster into the modal stage and reveals 保存海报
- PaymentRuntime: expose affiliate details_title
- user-center.js: remove never-defined AKSRTRevenueCenterInit guards (2 sites)
- CSS: revenue-earnings.css pruned to live rules plus the new link-row grid and
poster stage styles; routes/user-center/revenue.css pruned to its only
definitions; dead leaves routes/revenue.css and routes/commerce.css deleted and
dequeued from the user-center part list
- tests: referral-qr-contract test 2 rewritten for the QR-free card, link row and
poster modal; post-visual-contract leaf list updated with regression guards
qrcode.min.js stays enqueued — buildPosterCanvas still draws the QR inside the
poster. Net -833 lines.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Give the standalone promotion tab its own stylesheet and a task-priority
layout (成果概览 → 分享操作 → 奖励说明 → 邀请记录).
- assets/css/routes/user-center/promotion.css: new module owning all
uc-promotion-* rules; flattens #panel-promotion chrome, adds focus-visible
on the copy button + link input, and a ≤640px single-column layout with a
full-width copy button (no horizontal overflow)
- user-center.css: import the new promotion.css
- user-center/revenue.css: drop the now-migrated uc-promotion-* rules (keep
only the revenue-layout mobile rule)
- profile-invite.php: refresh doc header to describe the section priority
order; copy button stays a focusable <button>, credits.js keeps text-based
success/failure feedback via [data-invite-copy-feedback]