Webinar Registration Page Copy Generator
Craft compelling copy that boosts webinar sign-ups.
1. Webinar Details
2. Generated Copy
3. Preview & Export
Review and edit the generated copy components for your page.
${body}
In this webinar, you will learn:
- ${takeaways}
About the Presenter:
${bio}
`; elements.previewContainer.innerHTML = html; }; // --- PDF UTILITY --- const downloadPDF = () => { const { jsPDF } = window.jspdf; const pdf = new jsPDF({ orientation: 'p', unit: 'pt', format: 'a4' }); const webinarTitle = getInput('webinarTitle'); const title = `Webinar Copy Deck: ${webinarTitle}`; const PAGE_WIDTH = pdf.internal.pageSize.getWidth(); const MARGIN = 60; let y = 0; // PDF Header pdf.setFillColor(91, 33, 182); // violet-800 pdf.rect(0, 0, PAGE_WIDTH, 70, 'F'); pdf.setFont('helvetica', 'bold'); pdf.setFontSize(20); pdf.setTextColor(255, 255, 255); pdf.text(title, MARGIN, 45); y = 110; const copyItems = [ { label: 'Headline', value: document.getElementById('copy-headline').value }, { label: 'Sub-headline', value: document.getElementById('copy-subheadline').value }, { label: 'Body Paragraph', value: document.getElementById('copy-body').value }, { label: 'Key Takeaways', value: Array.from(document.querySelectorAll('.copy-takeaway-item')).map(i => `• ${i.value}`).join('\n') }, { label: 'Presenter Bio', value: document.getElementById('copy-bio').value }, ]; copyItems.forEach(item => { if (y > pdf.internal.pageSize.getHeight() - 100) { // Check for page break pdf.addPage(); y = MARGIN; } pdf.setFont('helvetica', 'bold'); pdf.setFontSize(14); pdf.setTextColor(76, 29, 149); // violet-900 pdf.text(item.label, MARGIN, y); y += 20; pdf.setFont('helvetica', 'normal'); pdf.setFontSize(11); pdf.setTextColor(51, 65, 85); // slate-700 const lines = pdf.splitTextToSize(item.value, PAGE_WIDTH - MARGIN * 2); pdf.text(lines, MARGIN, y); y += lines.length * 14 + 25; }); pdf.save(`${webinarTitle.replace(/ /g, '_')}_Copy_Deck.pdf`); }; // --- EVENT LISTENERS --- elements.prevBtn.addEventListener('click', () => nextPrev(-1)); elements.nextBtn.addEventListener('click', () => nextPrev(1)); elements.tabs.forEach((tab, i) => { tab.addEventListener('click', () => { console.warn("Direct tab navigation is disabled. Please use Next/Previous buttons."); }); }); elements.downloadPdfBtn.addEventListener('click', downloadPDF); // Initialize showTab(currentTab); });