InstantAdPay banner kit (kie.ai): hero + leaderboard + rectangle in Promo tools

- 3 brand banners generated via kie.ai (mint-on-dark Web3 aesthetic), served from /banners/
- Promo tools Banners card now shows the kit with copy-image-URL

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
martbost
2026-09-06 09:35:06 -05:00
parent 537e7352d4
commit 6423d57f60
13 changed files with 63 additions and 30 deletions
+27
View File
@@ -953,6 +953,33 @@
const sw = $('promoSwipeWrap');
sw.innerHTML = '';
sw.appendChild(promoBlock('Subject: ' + PROMO_SWIPE.subject + '\n\n' + PROMO_SWIPE.body.replace('{{LINK}}', link)));
// banner kit
const bwrap = $('promoBanners');
if (bwrap && !bwrap.dataset.filled) {
bwrap.dataset.filled = '1';
const BANNERS = [
{ file: 'iap-hero-1200x630.png', size: '1200×630 (social / hero)' },
{ file: 'iap-728x90.png', size: '728×90 (leaderboard)' },
{ file: 'iap-300x250.png', size: '300×250 (rectangle)' }
];
bwrap.innerHTML = '';
for (const b of BANNERS) {
const url = location.origin + '/banners/' + b.file;
const d = document.createElement('div');
d.className = 'pb-item';
d.innerHTML = '<img src="/banners/' + b.file + '" alt="InstantAdPay banner ' + b.size + '" loading="lazy">'
+ '<div class="pb-row"><span class="pb-size">' + b.size + '</span></div>';
const btn = document.createElement('button');
btn.className = 'btn small sec';
btn.textContent = 'Copy image URL';
btn.addEventListener('click', async () => {
try { await navigator.clipboard.writeText(url); IAP.status('Banner URL copied.', 'ok'); }
catch (e) { IAP.status('Copy failed.', 'bad'); }
});
d.querySelector('.pb-row').appendChild(btn);
bwrap.appendChild(d);
}
}
}
// ── profile ── (busy2 defers the busy lookup past its TDZ)