diff --git a/functions/api/send-email.js b/functions/api/send-email.js index be3551a..4a64c77 100644 --- a/functions/api/send-email.js +++ b/functions/api/send-email.js @@ -14,12 +14,12 @@ export async function onRequestPost(context) { }, body: JSON.stringify({ from: { - email: "daniel@laforceit.com", + email: "contact@argobox.com", name: "Daniel LaForce" }, to: [ { - email: "daniel@laforceit.com", + email: "daniel.laforce@argobox.com", name: "Daniel LaForce" } ], diff --git a/images/android-chrome-192x192.png b/images/android-chrome-192x192.png index ae134f4..bcdbd68 100644 Binary files a/images/android-chrome-192x192.png and b/images/android-chrome-192x192.png differ diff --git a/images/android-chrome-512x512.png b/images/android-chrome-512x512.png index 65ec24d..49143a7 100644 Binary files a/images/android-chrome-512x512.png and b/images/android-chrome-512x512.png differ diff --git a/images/apple-touch-icon.png b/images/apple-touch-icon.png index 188a172..75fd2a8 100644 Binary files a/images/apple-touch-icon.png and b/images/apple-touch-icon.png differ diff --git a/images/favicon-16x16.png b/images/favicon-16x16.png index a4b69e5..04b3075 100644 Binary files a/images/favicon-16x16.png and b/images/favicon-16x16.png differ diff --git a/images/favicon-32x32.png b/images/favicon-32x32.png index c23887b..be227e2 100644 Binary files a/images/favicon-32x32.png and b/images/favicon-32x32.png differ diff --git a/images/favicon.ico b/images/favicon.ico index 9f3652c..d998449 100644 Binary files a/images/favicon.ico and b/images/favicon.ico differ diff --git a/index.html b/index.html index 9908deb..c0b4adb 100644 --- a/index.html +++ b/index.html @@ -80,7 +80,7 @@

- System Administrator & IT Expert + Network & Cyber Security Professional DevOps & Automation Engineer @@ -92,7 +92,7 @@

- Building scalable infrastructure with optimized performance and bulletproof security — from server management to end-user support that keeps businesses running smoothly. + Securing and optimizing your digital infrastructure with enterprise-grade solutions — from zero-trust architecture to automated security monitoring that keeps your business protected 24/7.

@@ -132,7 +132,7 @@ - + Explore My Lab @@ -584,7 +584,7 @@

Email

-

daniel@laforceit.com

+

daniel.laforce@argobox.com

@@ -631,6 +631,10 @@ Send Message +
@@ -656,7 +660,7 @@ diff --git a/script.js b/script.js index 3f13196..648b702 100644 --- a/script.js +++ b/script.js @@ -394,9 +394,6 @@ function updateMetrics() { setInterval(updateMetricValues, 5000); } -/** - * Initialize contact form handling - */ /** * Initialize contact form handling */ @@ -427,16 +424,43 @@ function initFormHandling(form) { const data = await res.json(); + const notification = document.getElementById('form-notification'); + const notificationIcon = notification.querySelector('i'); + const notificationText = notification.querySelector('.notification-text'); + if (data.success) { - alert("Thank you for your message! I will get back to you soon."); + notification.style.display = 'block'; + notification.classList.add('success'); + notification.classList.remove('error'); + notificationIcon.className = 'fas fa-check-circle'; + notificationText.textContent = "Message sent successfully! We'll get back to you soon."; form.reset(); } else { - alert("Failed to send message. Please try again or contact me directly."); + notification.style.display = 'block'; + notification.classList.add('error'); + notification.classList.remove('success'); + notificationIcon.className = 'fas fa-exclamation-circle'; + notificationText.textContent = "Failed to send message. Please try again or contact me directly."; } + // Hide notification after 5 seconds + setTimeout(() => { + notification.style.display = 'none'; + }, 5000); + } catch (error) { console.error("Error:", error); - alert("Something went wrong while sending your message."); + const notification = document.getElementById('form-notification'); + notification.style.display = 'block'; + notification.classList.add('error'); + notification.classList.remove('success'); + notification.querySelector('i').className = 'fas fa-exclamation-circle'; + notification.querySelector('.notification-text').textContent = "Something went wrong while sending your message."; + + // Hide notification after 5 seconds + setTimeout(() => { + notification.style.display = 'none'; + }, 5000); } finally { submitButton.innerHTML = originalButtonText; submitButton.disabled = false; @@ -452,25 +476,4 @@ function updateYear() { if (yearElement) { yearElement.textContent = new Date().getFullYear(); } -} - -/** - * Utility function to add particle float animation - */ -document.addEventListener('DOMContentLoaded', function() { - // Initialize all website functionality - initNavigation(); - initParticlesAndIcons(); - initRoleRotation(); // Updated function - initTerminalTyping(); // Updated function - initSolutionsCarousel(); // Updated function - initScrollReveal(); - updateMetrics(); - updateYear(); - - // Initialize form handling - const contactForm = document.getElementById('contact-form'); - if (contactForm) { - initFormHandling(contactForm); - } -}); \ No newline at end of file +} \ No newline at end of file diff --git a/styles.css b/styles.css index ed0aec8..83ced35 100644 --- a/styles.css +++ b/styles.css @@ -1538,4 +1538,41 @@ text-shadow: 0 0 10px rgba(59, 130, 246, 0.8), 0 0 8px rgba(255, 255, 255, 0.3); transform: scale(1.02); } +.form-notification { + margin-top: 1rem; + padding: 1rem; + border-radius: 0.5rem; + display: flex; + align-items: center; + gap: 0.75rem; + animation: slideIn 0.3s ease-out; +} + +.form-notification.success { + background-color: #d1fae5; + color: #065f46; + border: 1px solid #34d399; +} + +.form-notification.error { + background-color: #fee2e2; + color: #991b1b; + border: 1px solid #f87171; +} + +.form-notification i { + font-size: 1.25rem; +} + +@keyframes slideIn { + from { + transform: translateY(-10px); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } +} +