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.
- daniel@laforceit.com
+ daniel.laforce@argobox.com
@@ -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;
+ }
+}
+