// Screen Test - Main JS document.addEventListener('DOMContentLoaded', function () { const form = document.getElementById('idea-form'); const submitButton = form.querySelector('button[type="submit"]'); const personasContainer = document.getElementById('personas-container'); const personasGrid = document.getElementById('personas-grid'); if (form) { form.addEventListener('submit', function (e) { e.preventDefault(); const audience = document.getElementById('target-audience').value; const idea = document.getElementById('business-idea').value; if (!audience || !idea) { alert('Please fill out both Target Audience and Business Idea fields.'); return; } // --- Loading State --- const originalButtonText = submitButton.innerHTML; submitButton.disabled = true; submitButton.innerHTML = ` Generating... `; personasContainer.classList.add('d-none'); personasGrid.innerHTML = ''; // --- API Call --- fetch('api/generate_personas.php', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ audience, idea }), }) .then(response => { if (!response.ok) { return response.json().then(err => { throw new Error(err.error || 'An unknown error occurred.') }); } return response.json(); }) .then(data => { // --- Render Personas --- if (data.personas && data.personas.length > 0) { renderPersonas(data.personas); personasContainer.classList.remove('d-none'); setTimeout(() => { personasContainer.scrollIntoView({ behavior: 'smooth', block: 'start' }); }, 100); } else { throw new Error('The AI did not return any personas. Please try refining your inputs.'); } }) .catch(error => { console.error('Error:', error); alert(`An error occurred: ${error.message}`); }) .finally(() => { // --- Reset Button --- submitButton.disabled = false; submitButton.innerHTML = originalButtonText; }); }); } function renderPersonas(personas) { const personaGradients = [ 'persona-gradient-1', 'persona-gradient-2', 'persona-gradient-3' ]; personasGrid.innerHTML = personas.map((persona, index) => `

${persona.name}

${persona.age}, ${persona.occupation}

Traits:

${persona.traits}

Concerns:

${persona.concerns}

Style:

${persona.style}

`).join(''); } });