`;
return isPreview ? html.replace(/<\/script>/g, '<\\/script>') : html;
};
const generateCode = () => {
const code = generateHtml(false);
document.getElementById('generated-code-block').textContent = code;
codeModal.style.display = 'flex';
};
// --- TAB NAVIGATION & INITIALIZATION ---
const switchTab = (tabIndex) => {
activeTabIndex = tabIndex;
document.querySelectorAll('.tab-btn').forEach((btn, i) => btn.classList.toggle('active', i === tabIndex));
document.querySelectorAll('.tab-content').forEach((content, i) => content.classList.toggle('hidden', i !== tabIndex));
updateNavButtons();
};
const updateNavButtons = () => {
prevTabBtn.disabled = activeTabIndex === 0;
nextTabBtn.disabled = activeTabIndex === tabIdentifiers.length - 1;
};
const initializeUI = () => {
const tabs = [
{ name: 'Live Preview', id: 'live-preview' },
{ name: 'Branding & Layout', id: 'branding-layout' },
{ name: 'Form Fields', id: 'form-fields' }
];
tabIdentifiers = tabs.map(t => t.id);
tabsContainer.innerHTML = tabs.map(tab => `
`).join('');
mainContent.innerHTML = tabs.map(tab => `
`).join('');
tabs.forEach((tab, index) => {
document.getElementById(`tab-${tab.id}`).addEventListener('click', () => switchTab(index));
});
renderLivePreview();
renderBrandingConfig();
renderFieldsConfig();
switchTab(0);
lucide.createIcons();
};
initializeUI();
// Modal listeners
closeModalBtn.addEventListener('click', () => codeModal.style.display = 'none');
copyCodeBtn.addEventListener('click', () => {
navigator.clipboard.writeText(document.getElementById('generated-code-block').textContent).then(() => {
const copyText = document.getElementById('copy-btn-text');
copyText.textContent = 'Copied!';
setTimeout(() => { copyText.textContent = 'Copy to Clipboard'; }, 2000);
});
});
prevTabBtn.addEventListener('click', () => { if (activeTabIndex > 0) switchTab(activeTabIndex - 1); });
nextTabBtn.addEventListener('click', () => { if (activeTabIndex < tabIdentifiers.length - 1) switchTab(activeTabIndex + 1); });
});