const sharp = require('sharp'); const path = require('path'); const ASSETS = path.join(__dirname, '..', 'assets'); function gradient(id) { return ` `; } // Full square icon (iOS + fallback) function makeIcon(size) { const ts = Math.round(size * 0.32); const cx = size / 2; const cy = size / 2 + ts * 0.1; return ` ${gradient('bg')} didi `; } // Adaptive foreground: FULL SQUARE gradient + text (no circle!) // Android handles the masking (circle, squircle, etc.) function makeAdaptive(size) { const ts = Math.round(size * 0.25); const cx = size / 2; const cy = size / 2 + ts * 0.1; return ` ${gradient('fg')} didi `; } // Favicon function makeFavicon(size) { const ts = Math.round(size * 0.40); return ` ${gradient('fv')} didi `; } async function main() { await sharp(Buffer.from(makeIcon(1024))) .png().toFile(path.join(ASSETS, 'icon.png')); console.log('icon.png'); await sharp(Buffer.from(makeAdaptive(1024))) .png().toFile(path.join(ASSETS, 'adaptive-icon.png')); console.log('adaptive-icon.png'); await sharp(Buffer.from(makeIcon(1024))) .png().toFile(path.join(ASSETS, 'splash-icon.png')); console.log('splash-icon.png'); await sharp(Buffer.from(makeFavicon(256))) .resize(48, 48).png().toFile(path.join(ASSETS, 'favicon.png')); console.log('favicon.png'); console.log('Done!'); } main().catch(console.error);