Landing Page Headline Generator

Landing Page Headline Generator

Create high-impact headlines that convert visitors into customers.

${headline}

`).join('')}
`).join(''); }; // --- Event Delegation for Copy buttons --- document.getElementById('generated-headlines').addEventListener('click', (e) => { let textToCopy = ''; if (e.target.classList.contains('copy-btn')) { textToCopy = e.target.closest('.headline-card').querySelector('.headline-text').textContent; copyToClipboard(textToCopy); } else if (e.target.classList.contains('copy-all-btn')) { textToCopy = Object.values(generatedHeadlines).flat().join('\n'); copyToClipboard(textToCopy); } }); const copyToClipboard = (text) => { const tempTextarea = document.createElement('textarea'); tempTextarea.value = text; document.body.appendChild(tempTextarea); tempTextarea.select(); document.execCommand('copy'); document.body.removeChild(tempTextarea); const msgEl = document.getElementById('copy-success-msg'); msgEl.textContent = 'Copied to clipboard!'; setTimeout(() => { msgEl.textContent = ''; }, 3000); }; const updateEmptyState = () => { const hasHeadlines = Object.keys(generatedHeadlines).length > 0; document.getElementById('report-content-area').style.display = hasHeadlines ? 'block' : 'none'; document.getElementById('report-empty-state').style.display = hasHeadlines ? 'none' : 'block'; downloadPdfBtn.style.display = hasHeadlines ? 'flex' : 'none'; }; // --- PDF Generation --- downloadPdfBtn.addEventListener('click', () => { const { jsPDF } = window.jspdf; if (!jsPDF || Object.keys(generatedHeadlines).length === 0) return; const doc = new jsPDF(); let yPos = 20; const product = document.getElementById('productName').value; doc.setFont('helvetica', 'bold'); doc.setFontSize(18); doc.text(`Landing Page Headlines for: ${product}`, 15, yPos); yPos += 15; Object.keys(generatedHeadlines).forEach(category => { if (yPos > 260) { doc.addPage(); yPos = 20; } doc.setFontSize(14); doc.text(category, 15, yPos); yPos += 8; doc.setFont('helvetica', 'normal'); doc.setFontSize(11); generatedHeadlines[category].forEach(headline => { if (yPos > 270) { doc.addPage(); yPos = 20; } const splitText = doc.splitTextToSize(`- ${headline}`, 180); doc.text(splitText, 15, yPos); yPos += (splitText.length * 5) + 2; }); yPos += 5; }); doc.save(`Headlines-${product.replace(/\s+/g, '-')}.pdf`); }); // --- Initialization --- updateEmptyState(); switchTab('generator'); });
Scroll to Top