diff --git a/app/actions/contact.ts b/app/actions/contact.ts
index 3c3250d0..abe3082d 100644
--- a/app/actions/contact.ts
+++ b/app/actions/contact.ts
@@ -1,5 +1,7 @@
"use server";
+import client, { ensureAuthenticated } from "@/lib/directus";
+import { createItem } from "@directus/sdk";
import { sendEmail } from "@/lib/mail/mailer";
import ContactEmail from "@/components/emails/ContactEmail";
import React from "react";
@@ -18,10 +20,34 @@ export async function sendContactFormAction(formData: FormData) {
return { success: false, error: "Missing required fields" };
}
+ // 1. Save to Directus
+ try {
+ await ensureAuthenticated();
+ if (productName) {
+ await client.request(createItem('product_requests', {
+ product_name: productName,
+ email,
+ message
+ }));
+ logger.info('Product request stored in Directus');
+ } else {
+ await client.request(createItem('contact_submissions', {
+ name,
+ email,
+ message
+ }));
+ logger.info('Contact submission stored in Directus');
+ }
+ } catch (error) {
+ logger.error('Failed to store submission in Directus', { error });
+ // We continue anyway to try sending the email, but maybe we should report this
+ }
+
+ // 2. Send Email
logger.info('Sending contact form email', { email, productName });
const subject = productName
- ? `Product Inquiry: ${productName}`
+ ? `Product Inquiry: ${productName}`
: "New Contact Form Submission";
const result = await sendEmail({
diff --git a/directus/uploads/2fb9b408-10e7-4b00-b81a-0c8b83e76b76.webm b/directus/uploads/2fb9b408-10e7-4b00-b81a-0c8b83e76b76.webm
deleted file mode 100644
index 50712b93..00000000
Binary files a/directus/uploads/2fb9b408-10e7-4b00-b81a-0c8b83e76b76.webm and /dev/null differ
diff --git a/directus/uploads/3416ac2d-ef4d-4747-868b-55aad4c799a9.webp b/directus/uploads/3416ac2d-ef4d-4747-868b-55aad4c799a9.webp
deleted file mode 100644
index 1fb6334b..00000000
Binary files a/directus/uploads/3416ac2d-ef4d-4747-868b-55aad4c799a9.webp and /dev/null differ
diff --git a/directus/uploads/35fd82ff-c72f-4cc3-9dd4-5390d3aa6ce4.webp b/directus/uploads/35fd82ff-c72f-4cc3-9dd4-5390d3aa6ce4.webp
deleted file mode 100644
index 2985a962..00000000
Binary files a/directus/uploads/35fd82ff-c72f-4cc3-9dd4-5390d3aa6ce4.webp and /dev/null differ
diff --git a/directus/uploads/38f46042-767c-4021-ac17-40f085f8a2a4.webp b/directus/uploads/38f46042-767c-4021-ac17-40f085f8a2a4.webp
deleted file mode 100644
index 97a62ffc..00000000
Binary files a/directus/uploads/38f46042-767c-4021-ac17-40f085f8a2a4.webp and /dev/null differ
diff --git a/directus/uploads/3d4762fb-c3e3-4948-aaf6-77655ab5fa2c.svg b/directus/uploads/3d4762fb-c3e3-4948-aaf6-77655ab5fa2c.svg
deleted file mode 100644
index 2d888a3d..00000000
--- a/directus/uploads/3d4762fb-c3e3-4948-aaf6-77655ab5fa2c.svg
+++ /dev/null
@@ -1,367 +0,0 @@
-
404 - Page not found - KLZ Cables https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-vendor-DOMPurify-DOMPurify.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-assets-js-external-permalinks.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-js-front-end-breeze-prefetch-links.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-min-svgs-inline-vanilla-min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-jquery-jquery.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-jquery-jquery-migrate.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-jquery-blockui-jquery.blockUI.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-js-cookie-js.cookie.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-frontend-woocommerce.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-dist-scripts-url-shortify.js?ver=1768599978
Skip to main content https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-build-third-party-jquery.easing.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-build-third-party-jquery.mousewheel.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-build-priority.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-build-third-party-transit.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-build-third-party-waypoints.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-build-third-party-imagesLoaded.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-build-third-party-hoverintent.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-build-third-party-jquery.fancybox.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-build-third-party-anime.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-build-third-party-superfish.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-build-init.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-build-nectar-smooth-scroll.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-third-party-touchswipe.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-js-front-end-breeze-lazy-load.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-sourcebuster-sourcebuster.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-frontend-order-attribution.min.js?ver=1768599978
https://klz-cables.com/wp-content/cache/breeze-minification/js/breeze_wp-content-uploads-2023-11-klz-logo-blau-svg-1-47401-js-build-nectar-delay-javascript.js?ver=1768599978
\ No newline at end of file
diff --git a/directus/uploads/403875f8-6623-4dd7-b8da-244f3604cf17.webp b/directus/uploads/403875f8-6623-4dd7-b8da-244f3604cf17.webp
deleted file mode 100644
index 15edf1d2..00000000
Binary files a/directus/uploads/403875f8-6623-4dd7-b8da-244f3604cf17.webp and /dev/null differ
diff --git a/directus/uploads/41b64e54-9ffa-4188-aff3-c1a79a44eacb.webp b/directus/uploads/41b64e54-9ffa-4188-aff3-c1a79a44eacb.webp
deleted file mode 100644
index 47e46624..00000000
Binary files a/directus/uploads/41b64e54-9ffa-4188-aff3-c1a79a44eacb.webp and /dev/null differ
diff --git a/directus/uploads/4ad3bc9c-3eb5-4645-8401-6c26ab677f15.webp b/directus/uploads/4ad3bc9c-3eb5-4645-8401-6c26ab677f15.webp
deleted file mode 100644
index a888a9ad..00000000
Binary files a/directus/uploads/4ad3bc9c-3eb5-4645-8401-6c26ab677f15.webp and /dev/null differ
diff --git a/directus/uploads/4ca10a02-eb28-42e5-9a25-3835cd07cc84.webp b/directus/uploads/4ca10a02-eb28-42e5-9a25-3835cd07cc84.webp
deleted file mode 100644
index 11a5979f..00000000
Binary files a/directus/uploads/4ca10a02-eb28-42e5-9a25-3835cd07cc84.webp and /dev/null differ
diff --git a/directus/uploads/54fce681-b22c-4fb3-a518-15b0f5d4b375.webp b/directus/uploads/54fce681-b22c-4fb3-a518-15b0f5d4b375.webp
deleted file mode 100644
index b4161f5b..00000000
Binary files a/directus/uploads/54fce681-b22c-4fb3-a518-15b0f5d4b375.webp and /dev/null differ
diff --git a/directus/uploads/5a083e91-3291-43fb-b1e5-3c33c65e478c.webp b/directus/uploads/5a083e91-3291-43fb-b1e5-3c33c65e478c.webp
deleted file mode 100644
index a0ecfbba..00000000
Binary files a/directus/uploads/5a083e91-3291-43fb-b1e5-3c33c65e478c.webp and /dev/null differ
diff --git a/directus/uploads/5a53b43e-bb5f-4646-b456-03201669d6d8.pdf b/directus/uploads/5a53b43e-bb5f-4646-b456-03201669d6d8.pdf
deleted file mode 100644
index 68841ac6..00000000
Binary files a/directus/uploads/5a53b43e-bb5f-4646-b456-03201669d6d8.pdf and /dev/null differ
diff --git a/directus/uploads/691acdf8-f699-400d-81ea-cca0cf022647.webp b/directus/uploads/691acdf8-f699-400d-81ea-cca0cf022647.webp
deleted file mode 100644
index 102164f8..00000000
Binary files a/directus/uploads/691acdf8-f699-400d-81ea-cca0cf022647.webp and /dev/null differ
diff --git a/directus/uploads/69d3eb65-f920-46e2-89cd-e2d5fb685f30.webp b/directus/uploads/69d3eb65-f920-46e2-89cd-e2d5fb685f30.webp
deleted file mode 100644
index 767d5469..00000000
Binary files a/directus/uploads/69d3eb65-f920-46e2-89cd-e2d5fb685f30.webp and /dev/null differ
diff --git a/directus/uploads/6bc9f3fe-e49b-4a46-a2d2-822622117557.webp b/directus/uploads/6bc9f3fe-e49b-4a46-a2d2-822622117557.webp
deleted file mode 100644
index 76c0e1f0..00000000
Binary files a/directus/uploads/6bc9f3fe-e49b-4a46-a2d2-822622117557.webp and /dev/null differ
diff --git a/directus/uploads/6dc91b9d-de3b-4564-98f2-a5af960ef304.webp b/directus/uploads/6dc91b9d-de3b-4564-98f2-a5af960ef304.webp
deleted file mode 100644
index 2b87fef5..00000000
Binary files a/directus/uploads/6dc91b9d-de3b-4564-98f2-a5af960ef304.webp and /dev/null differ
diff --git a/directus/uploads/72fb329b-2446-460e-a663-1b37d199406e.webp b/directus/uploads/72fb329b-2446-460e-a663-1b37d199406e.webp
deleted file mode 100644
index 4ff250d6..00000000
Binary files a/directus/uploads/72fb329b-2446-460e-a663-1b37d199406e.webp and /dev/null differ
diff --git a/directus/uploads/7894b3c8-d460-4751-9be6-7d62232ea093.webp b/directus/uploads/7894b3c8-d460-4751-9be6-7d62232ea093.webp
deleted file mode 100644
index e739c896..00000000
Binary files a/directus/uploads/7894b3c8-d460-4751-9be6-7d62232ea093.webp and /dev/null differ
diff --git a/directus/uploads/7dba4859-78b5-4500-a272-9a72d18d8e82.svg b/directus/uploads/7dba4859-78b5-4500-a272-9a72d18d8e82.svg
deleted file mode 100644
index df7fe0d6..00000000
--- a/directus/uploads/7dba4859-78b5-4500-a272-9a72d18d8e82.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
diff --git a/directus/uploads/81008cb3-88f6-47e3-99f8-5b90b5ae3e91.webp b/directus/uploads/81008cb3-88f6-47e3-99f8-5b90b5ae3e91.webp
deleted file mode 100644
index a6ba6953..00000000
Binary files a/directus/uploads/81008cb3-88f6-47e3-99f8-5b90b5ae3e91.webp and /dev/null differ
diff --git a/directus/uploads/894d40e7-4f9c-4128-923a-a96312878f67.webp b/directus/uploads/894d40e7-4f9c-4128-923a-a96312878f67.webp
deleted file mode 100644
index 8ca67e1d..00000000
Binary files a/directus/uploads/894d40e7-4f9c-4128-923a-a96312878f67.webp and /dev/null differ
diff --git a/directus/uploads/8a9fcf18-3d3a-45ae-9c4c-7b6e4fbc3ae0.webp b/directus/uploads/8a9fcf18-3d3a-45ae-9c4c-7b6e4fbc3ae0.webp
deleted file mode 100644
index bc18dcf2..00000000
Binary files a/directus/uploads/8a9fcf18-3d3a-45ae-9c4c-7b6e4fbc3ae0.webp and /dev/null differ
diff --git a/directus/uploads/8df628fb-6cb4-4c93-bd9a-53d6fc0f079e.webp b/directus/uploads/8df628fb-6cb4-4c93-bd9a-53d6fc0f079e.webp
deleted file mode 100644
index 2ccf825d..00000000
Binary files a/directus/uploads/8df628fb-6cb4-4c93-bd9a-53d6fc0f079e.webp and /dev/null differ
diff --git a/directus/uploads/936c32a6-d18f-4971-ac80-ba620532340a.css b/directus/uploads/936c32a6-d18f-4971-ac80-ba620532340a.css
deleted file mode 100644
index 7943bf8d..00000000
--- a/directus/uploads/936c32a6-d18f-4971-ac80-ba620532340a.css
+++ /dev/null
@@ -1 +0,0 @@
-#header-outer .nectar-ext-menu-item .image-layer-outer,#header-outer .nectar-ext-menu-item .image-layer,#header-outer .nectar-ext-menu-item .color-overlay,#slide-out-widget-area .nectar-ext-menu-item .image-layer-outer,#slide-out-widget-area .nectar-ext-menu-item .color-overlay,#slide-out-widget-area .nectar-ext-menu-item .image-layer{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;}.nectar-ext-menu-item .inner-content{position:relative;z-index:10;width:100%;}.nectar-ext-menu-item .image-layer{background-size:cover;background-position:center;transition:opacity 0.25s ease 0.1s;}.nectar-ext-menu-item .image-layer video{object-fit:cover;width:100%;height:100%;}#header-outer nav .nectar-ext-menu-item .image-layer:not(.loaded){background-image:none!important;}#header-outer nav .nectar-ext-menu-item .image-layer{opacity:0;}#header-outer nav .nectar-ext-menu-item .image-layer.loaded{opacity:1;}.nectar-ext-menu-item span[class*="inherit-h"] + .menu-item-desc{margin-top:0.4rem;}#mobile-menu .nectar-ext-menu-item .title,#slide-out-widget-area .nectar-ext-menu-item .title,.nectar-ext-menu-item .menu-title-text,.nectar-ext-menu-item .menu-item-desc{position:relative;}.nectar-ext-menu-item .menu-item-desc{display:block;line-height:1.4em;}body #slide-out-widget-area .nectar-ext-menu-item .menu-item-desc{line-height:1.4em;}#mobile-menu .nectar-ext-menu-item .title,#slide-out-widget-area .nectar-ext-menu-item:not(.style-img-above-text) .title,.nectar-ext-menu-item:not(.style-img-above-text) .menu-title-text,.nectar-ext-menu-item:not(.style-img-above-text) .menu-item-desc,.nectar-ext-menu-item:not(.style-img-above-text) i:before,.nectar-ext-menu-item:not(.style-img-above-text) .svg-icon{color:#fff;}#mobile-menu .nectar-ext-menu-item.style-img-above-text .title{color:inherit;}.sf-menu li ul li a .nectar-ext-menu-item .menu-title-text:after{display:none;}.menu-item .widget-area-active[data-margin="default"] > div:not(:last-child){margin-bottom:20px;}.nectar-ext-menu-item__button{display:inline-block;padding-top:2em;}#header-outer nav li:not([class*="current"]) > a .nectar-ext-menu-item .inner-content.has-button .title .menu-title-text{background-image:none;}.nectar-ext-menu-item__button .nectar-cta:not([data-color="transparent"]){margin-top:.8em;margin-bottom:.8em;}.nectar-ext-menu-item .color-overlay{transition:opacity 0.5s cubic-bezier(.15,.75,.5,1);}.nectar-ext-menu-item:hover .hover-zoom-in-slow .image-layer{transform:scale(1.15);transition:transform 4s cubic-bezier(0.1,0.2,.7,1);}.nectar-ext-menu-item:hover .hover-zoom-in-slow .color-overlay{transition:opacity 1.5s cubic-bezier(.15,.75,.5,1);}.nectar-ext-menu-item .hover-zoom-in-slow .image-layer{transition:transform 0.5s cubic-bezier(.15,.75,.5,1);}.nectar-ext-menu-item .hover-zoom-in-slow .color-overlay{transition:opacity 0.5s cubic-bezier(.15,.75,.5,1);}.nectar-ext-menu-item:hover .hover-zoom-in .image-layer{transform:scale(1.12);}.nectar-ext-menu-item .hover-zoom-in .image-layer{transition:transform 0.5s cubic-bezier(.15,.75,.5,1);}.nectar-ext-menu-item{display:flex;text-align:left;}#slide-out-widget-area .nectar-ext-menu-item .title,#slide-out-widget-area .nectar-ext-menu-item .menu-item-desc,#slide-out-widget-area .nectar-ext-menu-item .menu-title-text,#mobile-menu .nectar-ext-menu-item .title,#mobile-menu .nectar-ext-menu-item .menu-item-desc,#mobile-menu .nectar-ext-menu-item .menu-title-text{color:inherit!important;}#slide-out-widget-area .nectar-ext-menu-item,#mobile-menu .nectar-ext-menu-item{display:block;}#slide-out-widget-area .nectar-ext-menu-item .inner-content,#mobile-menu .nectar-ext-menu-item .inner-content{width:100%;}#slide-out-widget-area.fullscreen-alt .nectar-ext-menu-item,#slide-out-widget-area.fullscreen .nectar-ext-menu-item{text-align:center;}#header-outer .nectar-ext-menu-item.style-img-above-text .image-layer-outer,#slide-out-widget-area .nectar-ext-menu-item.style-img-above-text .image-layer-outer{position:relative;}#header-outer .nectar-ext-menu-item.style-img-above-text,#slide-out-widget-area .nectar-ext-menu-item.style-img-above-text{flex-direction:column;}@media only screen and (max-width:999px){body #header-outer #logo{position:relative;margin:10px 0;}body #header-space{height:68px;}body[data-button-style^="rounded"] #header-outer .menu-item-10389 > a{border-left-width:15px;border-right-width:15px;}body[data-button-style^="rounded"] #header-outer .menu-item-10389 > a:before,body[data-button-style^="rounded"] #header-outer .menu-item-10389 > a:after{left:-15px;width:calc(100% + 30px);}}@media only screen and (min-width:1000px){body #header-outer .menu-item-10389 > a{border-left-width:24px;border-right-width:24px;}body #header-outer #header-secondary-outer .menu-item-10389 > a{border-left:12px solid transparent;border-right:12px solid transparent;}body #header-outer .menu-item-10389 > a:before,body #header-outer .menu-item-10389 > a:after{left:-24px;height:calc(100% + 24px);width:calc(100% + 48px);}#header-outer #header-secondary-outer .menu-item-10389 > a:before,#header-outer #header-secondary-outer .menu-item-10389 > a:after{left:-12px;width:calc(100% + 24px);}}#header-outer .menu-item-10389 > a{border:12px solid transparent;opacity:1!important;}#header-outer #header-secondary-outer .menu-item-10389 > a{border-top:0;border-bottom:0;}#header-outer #top li.menu-item-10389 > a .nectar-menu-icon{transition:none;}body #header-outer[data-has-menu][data-format] header#top nav ul.sf-menu li.menu-item.menu-item-10389[class*="menu-item-btn-style"] > a *:not(.char),body #header-outer[data-has-menu][data-format] header#top nav ul.sf-menu li.menu-item.menu-item-10389[class*="menu-item-btn-style"] > a:hover *:not(.char){color:inherit!important;transition:none;opacity:1;}#header-outer .menu-item-10389 > a:hover,#header-outer #top nav .sf-menu li.menu-item.menu-item-10389 > a:hover,#header-outer .menu-item-10389[class*="current"] > a,#header-outer #top nav .sf-menu li.menu-item.menu-item-10389[class*="current"] > a{color:#fff!important;}#header-outer[data-has-menu="true"].transparent #top nav ul.sf-menu li.menu-item-10389 > a:hover .nectar-menu-icon{color:#fff!important;}#header-outer .menu-item-10389 > a:before,#header-outer .menu-item-10389 > a:after{position:absolute;top:50%!important;left:-12px;width:calc(100% + 24px);height:calc(100% + 24px);content:"";display:block;z-index:-1;transform-origin:top;transform:translateY(-50%)!important;transition:opacity .45s cubic-bezier(0.25,1,0.33,1),transform .45s cubic-bezier(0.25,1,0.33,1),border-color .45s cubic-bezier(0.25,1,0.33,1),color .45s cubic-bezier(0.25,1,0.33,1),background-color .45s cubic-bezier(0.25,1,0.33,1),box-shadow .45s cubic-bezier(0.25,1,0.33,1);}#header-outer #header-secondary-outer .menu-item-10389 > a:after,#header-outer #header-secondary-outer .menu-item-10389 > a:before{height:calc(100% + 12px);}#header-outer .menu-item-10389 > a:after{opacity:0;transition:opacity 0.3s ease,transform 0.3s ease;}#header-outer .menu-item-10389 > a .menu-title-text:after{display:none!important;}#header-outer .menu-item-10389 > a:before{border:1px solid;opacity:0.25;box-sizing:border-box;}#header-outer .menu-item-10389 > a:after{background:#1ACB7B;}#header-outer .menu-item-10389 > a:hover,#header-outer .menu-item-10389[class*="current"] > a{color:#fff;}#header-outer .menu-item-10389 > a:hover:after,#header-outer .menu-item-10389[class*="current"] > a:after{opacity:1;}@media only screen and (max-width:999px){body #header-outer #logo{position:relative;margin:10px 0;}body #header-space{height:68px;}body[data-button-style^="rounded"] #header-outer .menu-item-10947 > a{border-left-width:15px;border-right-width:15px;}body[data-button-style^="rounded"] #header-outer .menu-item-10947 > a:before,body[data-button-style^="rounded"] #header-outer .menu-item-10947 > a:after{left:-15px;width:calc(100% + 30px);}}@media only screen and (min-width:1000px){body #header-outer .menu-item-10947 > a{border-left-width:24px;border-right-width:24px;}body #header-outer #header-secondary-outer .menu-item-10947 > a{border-left:12px solid transparent;border-right:12px solid transparent;}body #header-outer .menu-item-10947 > a:before,body #header-outer .menu-item-10947 > a:after{left:-24px;height:calc(100% + 24px);width:calc(100% + 48px);}#header-outer #header-secondary-outer .menu-item-10947 > a:before,#header-outer #header-secondary-outer .menu-item-10947 > a:after{left:-12px;width:calc(100% + 24px);}}#header-outer .menu-item-10947 > a{border:12px solid transparent;opacity:1!important;}#header-outer #header-secondary-outer .menu-item-10947 > a{border-top:0;border-bottom:0;}#header-outer #top li.menu-item-10947 > a .nectar-menu-icon{transition:none;}body #header-outer[data-has-menu][data-format] header#top nav ul.sf-menu li.menu-item.menu-item-10947[class*="menu-item-btn-style"] > a *:not(.char),body #header-outer[data-has-menu][data-format] header#top nav ul.sf-menu li.menu-item.menu-item-10947[class*="menu-item-btn-style"] > a:hover *:not(.char){color:inherit!important;transition:none;opacity:1;}#header-outer .menu-item-10947 > a:hover,#header-outer #top nav .sf-menu li.menu-item.menu-item-10947 > a:hover,#header-outer .menu-item-10947[class*="current"] > a,#header-outer #top nav .sf-menu li.menu-item.menu-item-10947[class*="current"] > a{color:#fff!important;}#header-outer[data-has-menu="true"].transparent #top nav ul.sf-menu li.menu-item-10947 > a:hover .nectar-menu-icon{color:#fff!important;}#header-outer .menu-item-10947 > a:before,#header-outer .menu-item-10947 > a:after{position:absolute;top:50%!important;left:-12px;width:calc(100% + 24px);height:calc(100% + 24px);content:"";display:block;z-index:-1;transform-origin:top;transform:translateY(-50%)!important;transition:opacity .45s cubic-bezier(0.25,1,0.33,1),transform .45s cubic-bezier(0.25,1,0.33,1),border-color .45s cubic-bezier(0.25,1,0.33,1),color .45s cubic-bezier(0.25,1,0.33,1),background-color .45s cubic-bezier(0.25,1,0.33,1),box-shadow .45s cubic-bezier(0.25,1,0.33,1);}#header-outer #header-secondary-outer .menu-item-10947 > a:after,#header-outer #header-secondary-outer .menu-item-10947 > a:before{height:calc(100% + 12px);}#header-outer .menu-item-10947 > a:after{opacity:0;transition:opacity 0.3s ease,transform 0.3s ease;}#header-outer .menu-item-10947 > a .menu-title-text:after{display:none!important;}#header-outer .menu-item-10947 > a:before{border:1px solid;opacity:0.25;box-sizing:border-box;}#header-outer .menu-item-10947 > a:after{background:#1ACB7B;}#header-outer .menu-item-10947 > a:hover,#header-outer .menu-item-10947[class*="current"] > a{color:#fff;}#header-outer .menu-item-10947 > a:hover:after,#header-outer .menu-item-10947[class*="current"] > a:after{opacity:1;}
\ No newline at end of file
diff --git a/directus/uploads/97b2d95c-c8ac-42f4-b8bd-539cc84326f7.webp b/directus/uploads/97b2d95c-c8ac-42f4-b8bd-539cc84326f7.webp
deleted file mode 100644
index b1595dd5..00000000
Binary files a/directus/uploads/97b2d95c-c8ac-42f4-b8bd-539cc84326f7.webp and /dev/null differ
diff --git a/directus/uploads/996e975a-8f27-4de7-8e15-0086c76cb48a.webp b/directus/uploads/996e975a-8f27-4de7-8e15-0086c76cb48a.webp
deleted file mode 100644
index 7cb584b9..00000000
Binary files a/directus/uploads/996e975a-8f27-4de7-8e15-0086c76cb48a.webp and /dev/null differ
diff --git a/directus/uploads/a102a08f-1752-4c56-b354-4f44ffa5c153.webp b/directus/uploads/a102a08f-1752-4c56-b354-4f44ffa5c153.webp
deleted file mode 100644
index e16422bd..00000000
Binary files a/directus/uploads/a102a08f-1752-4c56-b354-4f44ffa5c153.webp and /dev/null differ
diff --git a/directus/uploads/a2ebf33e-a838-4dc7-bcd7-75fa93af3c22.webp b/directus/uploads/a2ebf33e-a838-4dc7-bcd7-75fa93af3c22.webp
deleted file mode 100644
index 3448409e..00000000
Binary files a/directus/uploads/a2ebf33e-a838-4dc7-bcd7-75fa93af3c22.webp and /dev/null differ
diff --git a/directus/uploads/a3c81317-8a23-4f15-bbf9-0ebb8c40e899.webp b/directus/uploads/a3c81317-8a23-4f15-bbf9-0ebb8c40e899.webp
deleted file mode 100644
index 33c262ed..00000000
Binary files a/directus/uploads/a3c81317-8a23-4f15-bbf9-0ebb8c40e899.webp and /dev/null differ
diff --git a/directus/uploads/a437bd19-b952-4020-ac68-566b2e80e6b7.webp b/directus/uploads/a437bd19-b952-4020-ac68-566b2e80e6b7.webp
deleted file mode 100644
index 1cc1de3e..00000000
Binary files a/directus/uploads/a437bd19-b952-4020-ac68-566b2e80e6b7.webp and /dev/null differ
diff --git a/directus/uploads/a61da05b-4403-453a-8767-6537ac26856e.webp b/directus/uploads/a61da05b-4403-453a-8767-6537ac26856e.webp
deleted file mode 100644
index 00818f03..00000000
Binary files a/directus/uploads/a61da05b-4403-453a-8767-6537ac26856e.webp and /dev/null differ
diff --git a/directus/uploads/ae734a48-acdb-4209-ada3-d1744bc368ea.webp b/directus/uploads/ae734a48-acdb-4209-ada3-d1744bc368ea.webp
deleted file mode 100644
index 1295fe1e..00000000
Binary files a/directus/uploads/ae734a48-acdb-4209-ada3-d1744bc368ea.webp and /dev/null differ
diff --git a/directus/uploads/afe1a036-0603-4189-bcfe-0dbf85af0f59.webp b/directus/uploads/afe1a036-0603-4189-bcfe-0dbf85af0f59.webp
deleted file mode 100644
index 917e4b4b..00000000
Binary files a/directus/uploads/afe1a036-0603-4189-bcfe-0dbf85af0f59.webp and /dev/null differ
diff --git a/directus/uploads/b4a07a55-e5bd-48b0-bd06-e4c81d601a29.webp b/directus/uploads/b4a07a55-e5bd-48b0-bd06-e4c81d601a29.webp
deleted file mode 100644
index 4a780223..00000000
Binary files a/directus/uploads/b4a07a55-e5bd-48b0-bd06-e4c81d601a29.webp and /dev/null differ
diff --git a/directus/uploads/b52e0ce3-0495-448b-a352-5725efb76f5a.webp b/directus/uploads/b52e0ce3-0495-448b-a352-5725efb76f5a.webp
deleted file mode 100644
index 924afd0c..00000000
Binary files a/directus/uploads/b52e0ce3-0495-448b-a352-5725efb76f5a.webp and /dev/null differ
diff --git a/directus/uploads/ba131149-933a-4895-b8b7-ca60b844dcfc.webp b/directus/uploads/ba131149-933a-4895-b8b7-ca60b844dcfc.webp
deleted file mode 100644
index 0ec25760..00000000
Binary files a/directus/uploads/ba131149-933a-4895-b8b7-ca60b844dcfc.webp and /dev/null differ
diff --git a/directus/uploads/bb2f6f8c-2e1c-427e-9c6d-23c5b803e3e4.jpg b/directus/uploads/bb2f6f8c-2e1c-427e-9c6d-23c5b803e3e4.jpg
deleted file mode 100644
index 34033255..00000000
Binary files a/directus/uploads/bb2f6f8c-2e1c-427e-9c6d-23c5b803e3e4.jpg and /dev/null differ
diff --git a/directus/uploads/bb6b236b-bc66-4b69-b5a8-602dbcec4acb.webp b/directus/uploads/bb6b236b-bc66-4b69-b5a8-602dbcec4acb.webp
deleted file mode 100644
index 4a780223..00000000
Binary files a/directus/uploads/bb6b236b-bc66-4b69-b5a8-602dbcec4acb.webp and /dev/null differ
diff --git a/directus/uploads/bbc69906-cf4d-4299-b042-dac6d4965288.webp b/directus/uploads/bbc69906-cf4d-4299-b042-dac6d4965288.webp
deleted file mode 100644
index e0458773..00000000
Binary files a/directus/uploads/bbc69906-cf4d-4299-b042-dac6d4965288.webp and /dev/null differ
diff --git a/directus/uploads/c081d6ff-8236-4acb-a835-cf05319e76e1.webp b/directus/uploads/c081d6ff-8236-4acb-a835-cf05319e76e1.webp
deleted file mode 100644
index 5a54d531..00000000
Binary files a/directus/uploads/c081d6ff-8236-4acb-a835-cf05319e76e1.webp and /dev/null differ
diff --git a/directus/uploads/c266284c-395e-4255-a78a-64fbe6f5794e.webp b/directus/uploads/c266284c-395e-4255-a78a-64fbe6f5794e.webp
deleted file mode 100644
index babf1795..00000000
Binary files a/directus/uploads/c266284c-395e-4255-a78a-64fbe6f5794e.webp and /dev/null differ
diff --git a/directus/uploads/c5282c22-f9b5-4ddc-9fd1-02d5061a9b92.jpg b/directus/uploads/c5282c22-f9b5-4ddc-9fd1-02d5061a9b92.jpg
deleted file mode 100644
index 93fbb7cd..00000000
Binary files a/directus/uploads/c5282c22-f9b5-4ddc-9fd1-02d5061a9b92.jpg and /dev/null differ
diff --git a/directus/uploads/c5ab33a2-913c-4aeb-a47b-5707fb1f2ed8.webp b/directus/uploads/c5ab33a2-913c-4aeb-a47b-5707fb1f2ed8.webp
deleted file mode 100644
index 00580c76..00000000
Binary files a/directus/uploads/c5ab33a2-913c-4aeb-a47b-5707fb1f2ed8.webp and /dev/null differ
diff --git a/directus/uploads/ca1c68be-6eed-4a29-b3a1-5989fb165cfe.webp b/directus/uploads/ca1c68be-6eed-4a29-b3a1-5989fb165cfe.webp
deleted file mode 100644
index 39bdc131..00000000
Binary files a/directus/uploads/ca1c68be-6eed-4a29-b3a1-5989fb165cfe.webp and /dev/null differ
diff --git a/directus/uploads/caad85a7-73be-4acc-9b49-8fa5ec549147.webp b/directus/uploads/caad85a7-73be-4acc-9b49-8fa5ec549147.webp
deleted file mode 100644
index f0e71149..00000000
Binary files a/directus/uploads/caad85a7-73be-4acc-9b49-8fa5ec549147.webp and /dev/null differ
diff --git a/directus/uploads/cc6c2fc1-8a7a-409c-9934-b69599ed4148.webp b/directus/uploads/cc6c2fc1-8a7a-409c-9934-b69599ed4148.webp
deleted file mode 100644
index 3565139e..00000000
Binary files a/directus/uploads/cc6c2fc1-8a7a-409c-9934-b69599ed4148.webp and /dev/null differ
diff --git a/directus/uploads/cce178f2-f83a-439c-938f-e8b5dcbe9be5.webp b/directus/uploads/cce178f2-f83a-439c-938f-e8b5dcbe9be5.webp
deleted file mode 100644
index 15e4f49a..00000000
Binary files a/directus/uploads/cce178f2-f83a-439c-938f-e8b5dcbe9be5.webp and /dev/null differ
diff --git a/directus/uploads/cd192a56-ae82-4938-8bc8-46506c778990.svg b/directus/uploads/cd192a56-ae82-4938-8bc8-46506c778990.svg
deleted file mode 100644
index ccb9e2d1..00000000
--- a/directus/uploads/cd192a56-ae82-4938-8bc8-46506c778990.svg
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
diff --git a/directus/uploads/d49186e9-1e6c-4e55-8e44-af83b91445b9.svg b/directus/uploads/d49186e9-1e6c-4e55-8e44-af83b91445b9.svg
deleted file mode 100644
index 0c6e18ce..00000000
--- a/directus/uploads/d49186e9-1e6c-4e55-8e44-af83b91445b9.svg
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
diff --git a/directus/uploads/d716d35d-4437-43d0-9f90-687b141134cc.webp b/directus/uploads/d716d35d-4437-43d0-9f90-687b141134cc.webp
deleted file mode 100644
index 92b53253..00000000
Binary files a/directus/uploads/d716d35d-4437-43d0-9f90-687b141134cc.webp and /dev/null differ
diff --git a/directus/uploads/d7b2d9da-7092-42b7-bad4-e23868f73fa0.webp b/directus/uploads/d7b2d9da-7092-42b7-bad4-e23868f73fa0.webp
deleted file mode 100644
index a2cf7f57..00000000
Binary files a/directus/uploads/d7b2d9da-7092-42b7-bad4-e23868f73fa0.webp and /dev/null differ
diff --git a/directus/uploads/d910c397-b373-48dc-a8b1-5dc6fb904de0.webp b/directus/uploads/d910c397-b373-48dc-a8b1-5dc6fb904de0.webp
deleted file mode 100644
index f7d24a97..00000000
Binary files a/directus/uploads/d910c397-b373-48dc-a8b1-5dc6fb904de0.webp and /dev/null differ
diff --git a/directus/uploads/dafb697e-0f56-4d3a-abca-77e1d0cb17bf.webp b/directus/uploads/dafb697e-0f56-4d3a-abca-77e1d0cb17bf.webp
deleted file mode 100644
index cbffcf80..00000000
Binary files a/directus/uploads/dafb697e-0f56-4d3a-abca-77e1d0cb17bf.webp and /dev/null differ
diff --git a/directus/uploads/dbf518de-ce35-406b-b03a-e7c64f852ddf.webp b/directus/uploads/dbf518de-ce35-406b-b03a-e7c64f852ddf.webp
deleted file mode 100644
index c4afcdbf..00000000
Binary files a/directus/uploads/dbf518de-ce35-406b-b03a-e7c64f852ddf.webp and /dev/null differ
diff --git a/directus/uploads/df20f9b1-c44a-42d2-88ba-373a92b6785e.webp b/directus/uploads/df20f9b1-c44a-42d2-88ba-373a92b6785e.webp
deleted file mode 100644
index 5ac8080a..00000000
Binary files a/directus/uploads/df20f9b1-c44a-42d2-88ba-373a92b6785e.webp and /dev/null differ
diff --git a/directus/uploads/e07fd506-fc01-4e61-8a76-2eb6e68c5142.webp b/directus/uploads/e07fd506-fc01-4e61-8a76-2eb6e68c5142.webp
deleted file mode 100644
index 26669364..00000000
Binary files a/directus/uploads/e07fd506-fc01-4e61-8a76-2eb6e68c5142.webp and /dev/null differ
diff --git a/directus/uploads/e0dc55aa-fc2f-4c23-8396-ce2d96958a34.webp b/directus/uploads/e0dc55aa-fc2f-4c23-8396-ce2d96958a34.webp
deleted file mode 100644
index 80b75fdb..00000000
Binary files a/directus/uploads/e0dc55aa-fc2f-4c23-8396-ce2d96958a34.webp and /dev/null differ
diff --git a/directus/uploads/e164f3ee-e72d-49ec-8d19-e3a2ffdf47c5.webp b/directus/uploads/e164f3ee-e72d-49ec-8d19-e3a2ffdf47c5.webp
deleted file mode 100644
index c9d5c452..00000000
Binary files a/directus/uploads/e164f3ee-e72d-49ec-8d19-e3a2ffdf47c5.webp and /dev/null differ
diff --git a/directus/uploads/e1f4ae03-ceb8-4c1f-8410-5578cf946b35.svg b/directus/uploads/e1f4ae03-ceb8-4c1f-8410-5578cf946b35.svg
deleted file mode 100644
index 7d08ef8c..00000000
--- a/directus/uploads/e1f4ae03-ceb8-4c1f-8410-5578cf946b35.svg
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
diff --git a/directus/uploads/e5c06a4f-674b-40f9-93cf-114fa0050e05.webp b/directus/uploads/e5c06a4f-674b-40f9-93cf-114fa0050e05.webp
deleted file mode 100644
index aeedf9c4..00000000
Binary files a/directus/uploads/e5c06a4f-674b-40f9-93cf-114fa0050e05.webp and /dev/null differ
diff --git a/directus/uploads/e7d4dda6-87ac-4d4d-9434-4d8fedbccf68.webp b/directus/uploads/e7d4dda6-87ac-4d4d-9434-4d8fedbccf68.webp
deleted file mode 100644
index 082d87dd..00000000
Binary files a/directus/uploads/e7d4dda6-87ac-4d4d-9434-4d8fedbccf68.webp and /dev/null differ
diff --git a/directus/uploads/e83bf338-b164-4303-880e-b8d5eadded06.webm b/directus/uploads/e83bf338-b164-4303-880e-b8d5eadded06.webm
deleted file mode 100644
index 7742121a..00000000
Binary files a/directus/uploads/e83bf338-b164-4303-880e-b8d5eadded06.webm and /dev/null differ
diff --git a/directus/uploads/e9794f22-65f0-48e4-bf59-b7cc5977371a.css b/directus/uploads/e9794f22-65f0-48e4-bf59-b7cc5977371a.css
deleted file mode 100644
index aad5a536..00000000
--- a/directus/uploads/e9794f22-65f0-48e4-bf59-b7cc5977371a.css
+++ /dev/null
@@ -1,161 +0,0 @@
-/* vietnamese */
-@font-face {
- font-family: 'Cabin';
- font-style: normal;
- font-weight: 400;
- font-stretch: normal;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkV2EH7mlx17r.woff2) format('woff2');
- unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
-}
-/* latin-ext */
-@font-face {
- font-family: 'Cabin';
- font-style: normal;
- font-weight: 400;
- font-stretch: normal;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkV2EH7ilx17r.woff2) format('woff2');
- unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-/* latin */
-@font-face {
- font-family: 'Cabin';
- font-style: normal;
- font-weight: 400;
- font-stretch: normal;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkV2EH7alxw.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-/* vietnamese */
-@font-face {
- font-family: 'Cabin';
- font-style: normal;
- font-weight: 500;
- font-stretch: normal;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkW-EH7mlx17r.woff2) format('woff2');
- unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
-}
-/* latin-ext */
-@font-face {
- font-family: 'Cabin';
- font-style: normal;
- font-weight: 500;
- font-stretch: normal;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkW-EH7ilx17r.woff2) format('woff2');
- unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-/* latin */
-@font-face {
- font-family: 'Cabin';
- font-style: normal;
- font-weight: 500;
- font-stretch: normal;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkW-EH7alxw.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-/* vietnamese */
-@font-face {
- font-family: 'Cabin';
- font-style: normal;
- font-weight: 700;
- font-stretch: normal;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkbqDH7mlx17r.woff2) format('woff2');
- unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
-}
-/* latin-ext */
-@font-face {
- font-family: 'Cabin';
- font-style: normal;
- font-weight: 700;
- font-stretch: normal;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkbqDH7ilx17r.woff2) format('woff2');
- unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-/* latin */
-@font-face {
- font-family: 'Cabin';
- font-style: normal;
- font-weight: 700;
- font-stretch: normal;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/u-4X0qWljRw-PfU81xCKCpdpbgZJl6XFpfEd7eA9BIxxkbqDH7alxw.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-/* cyrillic-ext */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 200;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvr6Hw0aXpsog.woff2) format('woff2');
- unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
-}
-/* cyrillic */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 200;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvr6Hw9aXpsog.woff2) format('woff2');
- unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
-}
-/* vietnamese */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 200;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvr6Hw2aXpsog.woff2) format('woff2');
- unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
-}
-/* latin-ext */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 200;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvr6Hw3aXpsog.woff2) format('woff2');
- unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-/* latin */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 200;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvr6Hw5aXo.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-/* cyrillic-ext */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 400;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw0aXpsog.woff2) format('woff2');
- unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
-}
-/* cyrillic */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 400;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw9aXpsog.woff2) format('woff2');
- unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
-}
-/* vietnamese */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 400;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw2aXpsog.woff2) format('woff2');
- unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
-}
-/* latin-ext */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 400;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw3aXpsog.woff2) format('woff2');
- unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-/* latin */
-@font-face {
- font-family: 'Montserrat';
- font-style: normal;
- font-weight: 400;
- src: url(https://klz-cables.com/wp-content/uploads/breeze/google/fonts/montserrat/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw5aXo.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
diff --git a/directus/uploads/f1edaec3-623e-4705-8c54-8b18982ba099.webp b/directus/uploads/f1edaec3-623e-4705-8c54-8b18982ba099.webp
deleted file mode 100644
index 78104655..00000000
Binary files a/directus/uploads/f1edaec3-623e-4705-8c54-8b18982ba099.webp and /dev/null differ
diff --git a/directus/uploads/f2a16570-1a0e-4e76-89cc-b12be0424227.webp b/directus/uploads/f2a16570-1a0e-4e76-89cc-b12be0424227.webp
deleted file mode 100644
index 4b74128c..00000000
Binary files a/directus/uploads/f2a16570-1a0e-4e76-89cc-b12be0424227.webp and /dev/null differ
diff --git a/directus/uploads/f3c93951-03af-4649-89d3-257b5331c2ca.webp b/directus/uploads/f3c93951-03af-4649-89d3-257b5331c2ca.webp
deleted file mode 100644
index e739c896..00000000
Binary files a/directus/uploads/f3c93951-03af-4649-89d3-257b5331c2ca.webp and /dev/null differ
diff --git a/directus/uploads/f3f8614f-a1bd-4688-93ec-7f3549baba39.webp b/directus/uploads/f3f8614f-a1bd-4688-93ec-7f3549baba39.webp
deleted file mode 100644
index 9d38cd29..00000000
Binary files a/directus/uploads/f3f8614f-a1bd-4688-93ec-7f3549baba39.webp and /dev/null differ
diff --git a/directus/uploads/f7f7aa09-13b6-4b39-9824-df8db06f0aed.webp b/directus/uploads/f7f7aa09-13b6-4b39-9824-df8db06f0aed.webp
deleted file mode 100644
index 8d29f96c..00000000
Binary files a/directus/uploads/f7f7aa09-13b6-4b39-9824-df8db06f0aed.webp and /dev/null differ
diff --git a/directus/uploads/f94b6ff6-5f38-42f4-b38a-cd11ac2f1073.webp b/directus/uploads/f94b6ff6-5f38-42f4-b38a-cd11ac2f1073.webp
deleted file mode 100644
index 7e91a93c..00000000
Binary files a/directus/uploads/f94b6ff6-5f38-42f4-b38a-cd11ac2f1073.webp and /dev/null differ
diff --git a/directus/uploads/fb54202d-a4b4-44bb-bb59-177cc8c84d3e.webp b/directus/uploads/fb54202d-a4b4-44bb-bb59-177cc8c84d3e.webp
deleted file mode 100644
index 17d715d8..00000000
Binary files a/directus/uploads/fb54202d-a4b4-44bb-bb59-177cc8c84d3e.webp and /dev/null differ
diff --git a/directus/uploads/fca347c5-1fb2-4473-a87e-7c7551d4d873.webp b/directus/uploads/fca347c5-1fb2-4473-a87e-7c7551d4d873.webp
deleted file mode 100644
index b63df1f6..00000000
Binary files a/directus/uploads/fca347c5-1fb2-4473-a87e-7c7551d4d873.webp and /dev/null differ
diff --git a/directus/uploads/ff3e48ed-ccd7-4d2b-afbc-6767c04d2d36.webp b/directus/uploads/ff3e48ed-ccd7-4d2b-afbc-6767c04d2d36.webp
deleted file mode 100644
index 263ca900..00000000
Binary files a/directus/uploads/ff3e48ed-ccd7-4d2b-afbc-6767c04d2d36.webp and /dev/null differ
diff --git a/directus/uploads/ffbfee02-5f52-4144-b26b-b49a4f5375c2.webp b/directus/uploads/ffbfee02-5f52-4144-b26b-b49a4f5375c2.webp
deleted file mode 100644
index 99dd95af..00000000
Binary files a/directus/uploads/ffbfee02-5f52-4144-b26b-b49a4f5375c2.webp and /dev/null differ
diff --git a/lib/config.ts b/lib/config.ts
index 54f8b4d6..50248594 100644
--- a/lib/config.ts
+++ b/lib/config.ts
@@ -57,6 +57,13 @@ function createConfig() {
from: env.MAIL_FROM,
recipients: env.MAIL_RECIPIENTS,
},
+ directus: {
+ url: env.DIRECTUS_URL,
+ adminEmail: env.DIRECTUS_ADMIN_EMAIL,
+ password: env.DIRECTUS_ADMIN_PASSWORD,
+ token: env.DIRECTUS_API_TOKEN,
+ proxyPath: '/cms',
+ },
} as const;
}
@@ -86,6 +93,7 @@ export const config = {
get cache() { return getConfig().cache; },
get logging() { return getConfig().logging; },
get mail() { return getConfig().mail; },
+ get directus() { return getConfig().directus; },
};
/**
@@ -124,5 +132,11 @@ export function getMaskedConfig() {
from: c.mail.from,
recipients: c.mail.recipients,
},
+ directus: {
+ url: c.directus.url,
+ adminEmail: mask(c.directus.adminEmail),
+ password: mask(c.directus.password),
+ token: mask(c.directus.token),
+ },
};
}
diff --git a/lib/directus.ts b/lib/directus.ts
index 3efdee73..480068a7 100644
--- a/lib/directus.ts
+++ b/lib/directus.ts
@@ -1,22 +1,20 @@
-import { createDirectus, rest, authentication, readItems, readItem } from '@directus/sdk';
+import { createDirectus, rest, authentication, readItems } from '@directus/sdk';
+import { config } from './config';
-const DIRECTUS_URL = process.env.DIRECTUS_URL || 'http://localhost:8055';
-const DIRECTUS_EMAIL = process.env.DIRECTUS_ADMIN_EMAIL;
-const DIRECTUS_PASSWORD = process.env.DIRECTUS_ADMIN_PASSWORD;
-const DIRECTUS_TOKEN = process.env.DIRECTUS_API_TOKEN;
+const { url, adminEmail, password, token, proxyPath } = config.directus;
-const client = createDirectus(DIRECTUS_URL)
+const client = createDirectus(url)
.with(rest())
.with(authentication());
export async function ensureAuthenticated() {
- if (DIRECTUS_TOKEN) {
- client.setToken(DIRECTUS_TOKEN);
+ if (token) {
+ client.setToken(token);
return;
}
- if (DIRECTUS_EMAIL && DIRECTUS_PASSWORD) {
+ if (adminEmail && password) {
try {
- await client.login(DIRECTUS_EMAIL, DIRECTUS_PASSWORD);
+ await client.login(adminEmail, password);
} catch (e) {
console.error("Failed to authenticate with Directus:", e);
}
@@ -41,7 +39,8 @@ function mapDirectusProduct(item: any, locale: string): any {
voltageTables: translation.voltage_tables || []
},
locale: locale,
- data_sheet_url: item.data_sheet ? `${DIRECTUS_URL}/assets/${item.data_sheet}` : null,
+ // Use proxy URL for assets to avoid CORS and handle internal/external issues
+ data_sheet_url: item.data_sheet ? `${proxyPath}/assets/${item.data_sheet}` : null,
categories: (item.categories_link || []).map((c: any) => c.categories_id?.translations?.[0]?.name).filter(Boolean)
};
}
diff --git a/lib/env.ts b/lib/env.ts
index 432943fd..0dd1924b 100644
--- a/lib/env.ts
+++ b/lib/env.ts
@@ -11,17 +11,17 @@ const preprocessEmptyString = (val: unknown) => (val === '' ? undefined : val);
export const envSchema = z.object({
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
NEXT_PUBLIC_BASE_URL: z.preprocess(preprocessEmptyString, z.string().url()),
-
+
// Analytics
NEXT_PUBLIC_UMAMI_WEBSITE_ID: z.preprocess(preprocessEmptyString, z.string().optional()),
NEXT_PUBLIC_UMAMI_SCRIPT_URL: z.preprocess(preprocessEmptyString, z.string().url().default('https://analytics.infra.mintel.me/script.js')),
-
+
// Error Tracking
SENTRY_DSN: z.preprocess(preprocessEmptyString, z.string().optional()),
-
+
// Logging
LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
-
+
// Mail
MAIL_HOST: z.preprocess(preprocessEmptyString, z.string().optional()),
MAIL_PORT: z.preprocess(preprocessEmptyString, z.coerce.number().default(587)),
@@ -32,6 +32,12 @@ export const envSchema = z.object({
(val) => (typeof val === 'string' ? val.split(',').filter(Boolean) : val),
z.array(z.string()).default([])
),
+
+ // Directus
+ DIRECTUS_URL: z.preprocess(preprocessEmptyString, z.string().url().default('http://localhost:8055')),
+ DIRECTUS_ADMIN_EMAIL: z.preprocess(preprocessEmptyString, z.string().optional()),
+ DIRECTUS_ADMIN_PASSWORD: z.preprocess(preprocessEmptyString, z.string().optional()),
+ DIRECTUS_API_TOKEN: z.preprocess(preprocessEmptyString, z.string().optional()),
});
export type Env = z.infer;
@@ -54,5 +60,9 @@ export function getRawEnv() {
MAIL_PASSWORD: process.env.MAIL_PASSWORD,
MAIL_FROM: process.env.MAIL_FROM,
MAIL_RECIPIENTS: process.env.MAIL_RECIPIENTS,
+ DIRECTUS_URL: process.env.DIRECTUS_URL,
+ DIRECTUS_ADMIN_EMAIL: process.env.DIRECTUS_ADMIN_EMAIL,
+ DIRECTUS_ADMIN_PASSWORD: process.env.DIRECTUS_ADMIN_PASSWORD,
+ DIRECTUS_API_TOKEN: process.env.DIRECTUS_API_TOKEN,
};
}
diff --git a/next.config.mjs b/next.config.mjs
index 63a140f5..8c749144 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -1,8 +1,8 @@
import createNextIntlPlugin from 'next-intl/plugin';
import { withSentryConfig } from '@sentry/nextjs';
-
+
const withNextIntl = createNextIntlPlugin();
-
+
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'standalone',
@@ -336,6 +336,10 @@ const nextConfig = {
source: '/errors/:path*',
destination: `${glitchtipUrl}/:path*`,
},
+ {
+ source: '/cms/:path*',
+ destination: `${process.env.DIRECTUS_URL}/:path*`,
+ },
];
},
};