(function () { if (document.getElementById('lc-widget-root-6899d37ba3062f7165d30f17')) { return; } var settings = {"widgetHeader":"Get more information","headerBackgroundColor":"#6597D5","headerTextColor":"#FFFFFF","backgroundColor":"#FFFFFF","buttonColor":"#6597D5","hidePoweredBy":false,"widgetPosition":"left","floatingIcon":"linkedclient-white","roundedButtons":true,"showNoteField":true,"notePlaceholder":"Contact me please, I'd like to learn more..."}; function createEl(tag, styles, text) { var el = document.createElement(tag); if (styles) { Object.keys(styles).forEach(function (key) { el.style[key] = styles[key]; }); } if (typeof text === 'string') { el.textContent = text; } return el; } function createFieldWrapper() { return createEl('div', { marginBottom: '12px' }); } function createErrorEl() { return createEl('div', { color: '#d93025', fontSize: '12px', marginTop: '6px', display: 'none' }); } function createInput(type, placeholder, name) { var el; if (type === 'textarea') { el = document.createElement('textarea'); el.rows = 3; } else { el = document.createElement('input'); el.type = type; } el.name = name; el.id = 'lc-' + '6899d37ba3062f7165d30f17' + '-' + name; el.placeholder = placeholder; el.autocomplete = name; el.style.width = '100%'; el.style.boxSizing = 'border-box'; el.style.padding = '10px 12px'; el.style.border = '1px solid #cccccc'; el.style.borderRadius = '8px'; el.style.fontSize = '14px'; el.style.outline = 'none'; el.style.background = '#ffffff'; el.style.color = '#111111'; return el; } function setFieldError(input, errorEl, message) { input.style.border = '1px solid #d93025'; input.style.boxShadow = '0 0 0 1px rgba(217,48,37,0.15)'; errorEl.textContent = message; errorEl.style.display = 'block'; } function clearFieldError(input, errorEl) { input.style.border = '1px solid #cccccc'; input.style.boxShadow = 'none'; errorEl.textContent = ''; errorEl.style.display = 'none'; } function validateEmail(value) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value); } function validateRequired(value) { return typeof value === 'string' && value.trim().length > 0; } function validateFullName(value) { return typeof value === 'string' && value.split('')[0] && value.split('')[0].length > 0 && value.split('')[1] && value.split('')[1].length > 0; } function validatePhone(value) { const pattern = /^\+?\d+$/; return pattern.test(value); } var isOpen = true; var root = createEl('div', { position: 'fixed', bottom: '24px', zIndex: '999999', fontFamily: 'Arial, sans-serif' }); root.id = 'lc-widget-root-' + '6899d37ba3062f7165d30f17'; root.style[settings.widgetPosition] = '24px'; var card = createEl('div', { width: '320px', background: settings.backgroundColor, border: '1px solid #dcdcdc', borderRadius: '12px', boxShadow: '0 8px 24px rgba(0,0,0,0.15)', overflow: 'hidden' }); var header = createEl('div', { background: settings.headerBackgroundColor, color: settings.headerTextColor, padding: '14px 16px', fontSize: '16px', fontWeight: '700', display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '12px' }); var headerTitle = createEl('div', null, settings.widgetHeader); var closeButton = createEl('button', { border: 'none', background: 'transparent', color: settings.headerTextColor, cursor: 'pointer', fontSize: '20px', lineHeight: '20px', padding: '0', width: '24px', height: '24px', display: 'flex', alignItems: 'center', justifyContent: 'center' }, '×'); closeButton.type = 'button'; closeButton.setAttribute('aria-label', 'Close widget'); header.appendChild(headerTitle); header.appendChild(closeButton); var body = createEl('div', { padding: '16px', background: settings.backgroundColor }); var nameField = createFieldWrapper(); var nameInput = createInput('text', 'Name', 'name'); var nameError = createErrorEl(); nameField.appendChild(nameInput); nameField.appendChild(nameError); var emailField = createFieldWrapper(); var emailInput = createInput('email', 'Email', 'email'); var emailError = createErrorEl(); emailField.appendChild(emailInput); emailField.appendChild(emailError); var phoneField = createFieldWrapper(); var phoneInput = createInput('text', 'Phone', 'phone'); var phoneError = createErrorEl(); phoneField.appendChild(phoneInput); phoneField.appendChild(phoneError); body.appendChild(nameField); body.appendChild(emailField); body.appendChild(phoneField); var noteInput = null; var noteField = null; var noteError = null; if (settings.showNoteField) { noteField = createFieldWrapper(); noteInput = createInput('textarea', settings.notePlaceholder, 'note'); noteInput.style.resize = 'vertical'; noteError = createErrorEl(); noteField.appendChild(noteInput); noteField.appendChild(noteError); body.appendChild(noteField); } var button = createEl('button', { width: '100%', padding: '12px 16px', border: 'none', cursor: 'pointer', fontWeight: '700', background: settings.buttonColor, color: '#FFFFFF', borderRadius: settings.roundedButtons ? '999px' : '8px' }, 'Send'); button.type = 'button'; var status = createEl('div', { marginTop: '12px', fontSize: '13px', color: '#333333' }); function validateForm() { var isValid = true; clearFieldError(nameInput, nameError); clearFieldError(emailInput, emailError); clearFieldError(phoneInput, phoneError); if (noteInput && noteError) { clearFieldError(noteInput, noteError); } if (!validateRequired(nameInput.value)) { setFieldError(nameInput, nameError, 'Name is required.'); isValid = false; } if (!validateFullName(nameInput.value)) { setFieldError(nameInput, nameError, 'Full Name is required.'); isValid = false; } if (!validateRequired(emailInput.value)) { setFieldError(emailInput, emailError, 'Email is required.'); isValid = false; } else if (!validateEmail(emailInput.value.trim())) { setFieldError(emailInput, emailError, 'Enter a valid email address.'); isValid = false; } else if (!validatePhone(phoneInput.value.trim())) { setFieldError(phoneInput, phoneInput, 'Enter a valid phone number.'); isValid = false; } return isValid; } nameInput.addEventListener('input', function () { if (validateRequired(nameInput.value) && validateFullName(nameInput.value)) { clearFieldError(nameInput, nameError); } }); emailInput.addEventListener('input', function () { var value = emailInput.value.trim(); if (!value) { clearFieldError(emailInput, emailError); return; } if (validateEmail(value)) { clearFieldError(emailInput, emailError); } else { setFieldError(emailInput, emailError, 'Enter a valid email address.'); } }); phoneInput.addEventListener('input', function () { var value = phoneInput.value.trim(); if (!value) { clearFieldError(phoneInput, phoneError); return; } if (validatePhone(value)) { clearFieldError(phoneInput, phoneError); } else { setFieldError(phoneInput, phoneError, 'Enter a valid phone number.'); } }); button.addEventListener('click', async function () { status.textContent = ''; status.style.color = '#333333'; if (!validateForm()) { return; } var payload = { fullName: nameInput.value.trim(), email: emailInput.value.trim(), phone: phoneInput.value.trim(), note: noteInput ? noteInput.value.trim() : null }; button.disabled = true; button.style.opacity = '0.7'; button.style.cursor = 'not-allowed'; try { var response = await fetch( 'https://ai.linkedclient.com/api' + '/widgets/users/' + '6899d37ba3062f7165d30f17' + '/inbound-contact', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) } ); if (!response.ok) { status.style.color = '#d93025'; status.textContent = 'Something went wrong.'; console.error('[LC Widget] Request failed:', response.status); return; } status.style.color = '#1a7f37'; status.textContent = 'Message sent.'; nameInput.value = ''; emailInput.value = ''; phoneInput.value = ''; if (noteInput) { noteInput.value = ''; } clearFieldError(nameInput, nameError); clearFieldError(emailInput, emailError); clearFieldError(phoneInput, phoneError); if (noteInput && noteError) { clearFieldError(noteInput, noteError); } } catch (error) { status.style.color = '#d93025'; status.textContent = error && error.message ? error.message : 'Something went wrong.'; console.error('[LC Widget]', error); } finally { button.disabled = false; button.style.opacity = '1'; button.style.cursor = 'pointer'; } }); body.appendChild(button); body.appendChild(status); if (!settings.hidePoweredBy) { var footer = createEl('div', { marginTop: '8px', fontSize: '11px', textAlign: settings.widgetPosition === 'right' ? 'right' : 'left' }); var link = createEl('a', { color: '#777777', textDecoration: 'none' }, "Powered by LinkedClient"); link.href = "https://ai.linkedclient.com/sales-ai"; link.target = '_blank'; link.rel = 'noopener noreferrer'; footer.appendChild(link); body.appendChild(footer); } card.appendChild(header); card.appendChild(body); var floatingButton = createEl('button', { position: 'fixed', bottom: '24px', width: '56px', height: '56px', border: 'none', cursor: 'pointer', background: settings.buttonColor, color: '#ffffff', borderRadius: settings.roundedButtons ? '50%' : '14px', boxShadow: '0 8px 24px rgba(0,0,0,0.2)', display: 'none', alignItems: 'center', justifyContent: 'center', fontSize: '24px', zIndex: '999999' }, '+'); floatingButton.style[settings.widgetPosition] = '24px'; floatingButton.type = 'button'; floatingButton.setAttribute('aria-label', 'Open widget'); function openWidget() { isOpen = true; root.style.display = 'block'; floatingButton.style.display = 'none'; } function closeWidget() { isOpen = false; root.style.display = 'none'; floatingButton.style.display = 'flex'; } closeButton.addEventListener('click', function () { closeWidget(); }); floatingButton.addEventListener('click', function () { openWidget(); }); root.appendChild(card); function init() { if (!document.body) { return setTimeout(init, 10); } document.body.appendChild(root); document.body.appendChild(floatingButton); } init(); })();