diff --git a/components/blocks/HeroVideo.tsx b/components/blocks/HeroVideo.tsx index 9a9192c00..ca2bb26f4 100644 --- a/components/blocks/HeroVideo.tsx +++ b/components/blocks/HeroVideo.tsx @@ -22,6 +22,8 @@ interface HeroVideoProps { badge?: string; } +import placeholders from '@/lib/placeholders.json'; + export function HeroVideo(props: HeroVideoProps) { const { data } = props; const title = props.title || data?.title || 'DIE EXPERTEN FÜR KABELNETZBAU'; @@ -37,6 +39,7 @@ export function HeroVideo(props: HeroVideoProps) { const posterSrc = props.backgroundImage?.url || props.posterImage?.url || data?.posterImage?.url || defaultPoster; const posterAlt = props.backgroundImage?.alt || data?.posterImage?.alt || "E-TIB Gruppe Baustelle"; + const blurDataURL = (placeholders as Record)[posterSrc] || undefined; const ctaLabel = props.ctaLabel || props.linkText || data?.ctaLabel || 'Unternehmen entdecken'; const ctaHref = props.ctaHref || props.linkHref || data?.ctaHref || '#unternehmen'; @@ -87,6 +90,8 @@ export function HeroVideo(props: HeroVideoProps) { className="object-cover z-[1] pointer-events-none filter contrast-125 saturate-110 brightness-90" sizes="100vw" priority + placeholder={blurDataURL ? "blur" : "empty"} + blurDataURL={blurDataURL} /> {/* Render video on top if available, but defer src to avoid blocking LCP */} diff --git a/lib/placeholders.json b/lib/placeholders.json new file mode 100644 index 000000000..dc1180a30 --- /dev/null +++ b/lib/placeholders.json @@ -0,0 +1,7 @@ +{ + "/assets/photos/DJI_0048.JPG": "data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAADwAQCdASoKAAcABUB8JYwCdH8AGDNIbaAA92kbyv6vgOVMTIAAAA==", + "/assets/videos/web/hero-bahnkreuzung-poster.jpg": "data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoKAAYABUB8JaQAA3AA/vDUoAA=", + "/assets/videos/web/hero-bohrung-poster.jpg": "data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAACwAQCdASoKAAYABUB8JZACdAEOO2gAAN5Rr3co8j7CDYNKNCAAAA==", + "/assets/videos/web/hero-kabelpflug-poster.jpg": "data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoKAAYABUB8JaQAA3AA/vDUoAA=", + "/assets/videos/web/hero-messe-poster.jpg": "data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoKAAYABUB8JaQAA3AA/vDUoAA=" +} \ No newline at end of file diff --git a/public/assets/photos/2025-09-23_12.11.43.jpg b/public/assets/photos/2025-09-23_12.11.43.jpg old mode 100755 new mode 100644 index 07b450a2f..20838b157 Binary files a/public/assets/photos/2025-09-23_12.11.43.jpg and b/public/assets/photos/2025-09-23_12.11.43.jpg differ diff --git a/public/assets/photos/2025-09-23_12.12.37.jpg b/public/assets/photos/2025-09-23_12.12.37.jpg old mode 100755 new mode 100644 index f4caeec5e..4cbc3636d Binary files a/public/assets/photos/2025-09-23_12.12.37.jpg and b/public/assets/photos/2025-09-23_12.12.37.jpg differ diff --git a/public/assets/photos/DJI_0037.JPG b/public/assets/photos/DJI_0037.JPG old mode 100755 new mode 100644 index 27c8591c7..d23602129 Binary files a/public/assets/photos/DJI_0037.JPG and b/public/assets/photos/DJI_0037.JPG differ diff --git a/public/assets/photos/DJI_0048.JPG b/public/assets/photos/DJI_0048.JPG old mode 100755 new mode 100644 index 8e03cb836..abb487f19 Binary files a/public/assets/photos/DJI_0048.JPG and b/public/assets/photos/DJI_0048.JPG differ diff --git a/public/assets/photos/DJI_0243.JPG b/public/assets/photos/DJI_0243.JPG old mode 100755 new mode 100644 index 4592d48ea..6c40fc2f8 Binary files a/public/assets/photos/DJI_0243.JPG and b/public/assets/photos/DJI_0243.JPG differ diff --git a/public/assets/photos/DJI_0301.JPG b/public/assets/photos/DJI_0301.JPG old mode 100755 new mode 100644 index 04fcf84c7..f48b1227e Binary files a/public/assets/photos/DJI_0301.JPG and b/public/assets/photos/DJI_0301.JPG differ diff --git a/public/assets/photos/DSC00373.jpg b/public/assets/photos/DSC00373.jpg old mode 100755 new mode 100644 index f647d39de..7e1b7d9b2 Binary files a/public/assets/photos/DSC00373.jpg and b/public/assets/photos/DSC00373.jpg differ diff --git a/public/assets/photos/DSC00375.jpg b/public/assets/photos/DSC00375.jpg old mode 100755 new mode 100644 index 911d956ce..c000c7932 Binary files a/public/assets/photos/DSC00375.jpg and b/public/assets/photos/DSC00375.jpg differ diff --git a/public/assets/photos/DSC00388.jpg b/public/assets/photos/DSC00388.jpg old mode 100755 new mode 100644 index 04289395a..a8013238f Binary files a/public/assets/photos/DSC00388.jpg and b/public/assets/photos/DSC00388.jpg differ diff --git a/public/assets/photos/DSC00400.jpg b/public/assets/photos/DSC00400.jpg old mode 100755 new mode 100644 index 540e132ba..9c7e61a94 Binary files a/public/assets/photos/DSC00400.jpg and b/public/assets/photos/DSC00400.jpg differ diff --git a/public/assets/photos/DSC00430.jpg b/public/assets/photos/DSC00430.jpg old mode 100755 new mode 100644 index 457bf7578..5c6ea5ce7 Binary files a/public/assets/photos/DSC00430.jpg and b/public/assets/photos/DSC00430.jpg differ diff --git a/public/assets/photos/DSC00440.jpg b/public/assets/photos/DSC00440.jpg old mode 100755 new mode 100644 index 76e5b028b..f2e175ed7 Binary files a/public/assets/photos/DSC00440.jpg and b/public/assets/photos/DSC00440.jpg differ diff --git a/public/assets/photos/DSC00452.jpg b/public/assets/photos/DSC00452.jpg old mode 100755 new mode 100644 index 899ce05ea..ce9c84c4d Binary files a/public/assets/photos/DSC00452.jpg and b/public/assets/photos/DSC00452.jpg differ diff --git a/public/assets/photos/DSC02028.jpg b/public/assets/photos/DSC02028.jpg old mode 100755 new mode 100644 index ae582992c..437dc95f0 Binary files a/public/assets/photos/DSC02028.jpg and b/public/assets/photos/DSC02028.jpg differ diff --git a/public/assets/photos/DSC02057.jpg b/public/assets/photos/DSC02057.jpg old mode 100755 new mode 100644 index b1ea8f9ee..558fde1a6 Binary files a/public/assets/photos/DSC02057.jpg and b/public/assets/photos/DSC02057.jpg differ diff --git a/public/assets/photos/DSC02069.jpg b/public/assets/photos/DSC02069.jpg old mode 100755 new mode 100644 index ce43bd94e..81f19bcaa Binary files a/public/assets/photos/DSC02069.jpg and b/public/assets/photos/DSC02069.jpg differ diff --git a/public/assets/photos/DSC02083.jpg b/public/assets/photos/DSC02083.jpg old mode 100755 new mode 100644 index 912bc63db..c05fd2630 Binary files a/public/assets/photos/DSC02083.jpg and b/public/assets/photos/DSC02083.jpg differ diff --git a/public/assets/photos/DSC02089.jpg b/public/assets/photos/DSC02089.jpg old mode 100755 new mode 100644 index 24ede1398..d1fe4a935 Binary files a/public/assets/photos/DSC02089.jpg and b/public/assets/photos/DSC02089.jpg differ diff --git a/public/assets/photos/DSC02114.jpg b/public/assets/photos/DSC02114.jpg old mode 100755 new mode 100644 index 8e44cef02..4983633ee Binary files a/public/assets/photos/DSC02114.jpg and b/public/assets/photos/DSC02114.jpg differ diff --git a/public/assets/photos/DSC02135.jpg b/public/assets/photos/DSC02135.jpg old mode 100755 new mode 100644 index 52c23d06d..db2420270 Binary files a/public/assets/photos/DSC02135.jpg and b/public/assets/photos/DSC02135.jpg differ diff --git a/public/assets/photos/DSC02150.jpg b/public/assets/photos/DSC02150.jpg old mode 100755 new mode 100644 index a1727572b..9640ff44c Binary files a/public/assets/photos/DSC02150.jpg and b/public/assets/photos/DSC02150.jpg differ diff --git a/public/assets/photos/DSC02152.jpg b/public/assets/photos/DSC02152.jpg old mode 100755 new mode 100644 index 44b589525..e8d284367 Binary files a/public/assets/photos/DSC02152.jpg and b/public/assets/photos/DSC02152.jpg differ diff --git a/public/assets/photos/DSC02156.jpg b/public/assets/photos/DSC02156.jpg old mode 100755 new mode 100644 index 5c8bbfd04..164b75c84 Binary files a/public/assets/photos/DSC02156.jpg and b/public/assets/photos/DSC02156.jpg differ diff --git a/public/assets/photos/DSC02164.jpg b/public/assets/photos/DSC02164.jpg old mode 100755 new mode 100644 index d63a6882f..fb0b5ce3a Binary files a/public/assets/photos/DSC02164.jpg and b/public/assets/photos/DSC02164.jpg differ diff --git a/public/assets/photos/DSCF8687.JPG b/public/assets/photos/DSCF8687.JPG old mode 100755 new mode 100644 index 81bbb33b9..e54895ac7 Binary files a/public/assets/photos/DSCF8687.JPG and b/public/assets/photos/DSCF8687.JPG differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-100.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-100.jpg old mode 100755 new mode 100644 index 47c767018..5daf9414e Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-100.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-100.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-12.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-12.jpg old mode 100755 new mode 100644 index a82a05cf7..acf1ef61d Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-12.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-12.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-14.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-14.jpg old mode 100755 new mode 100644 index e786f3aaf..9a014d583 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-14.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-14.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-15.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-15.jpg old mode 100755 new mode 100644 index 317e08834..c9de9e096 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-15.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-15.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-2.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-2.jpg old mode 100755 new mode 100644 index 066993db3..2fec7376a Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-2.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-2.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-24.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-24.jpg old mode 100755 new mode 100644 index 01a77ac23..68b140d36 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-24.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-24.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-27.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-27.jpg old mode 100755 new mode 100644 index ac899d965..0fb0c2e13 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-27.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-27.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-28.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-28.jpg old mode 100755 new mode 100644 index 46eff828e..7d6ba78b5 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-28.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-28.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-3.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-3.jpg old mode 100755 new mode 100644 index 1de22a1a5..ce8a003b7 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-3.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-3.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-45.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-45.jpg old mode 100755 new mode 100644 index 6920153d8..0760e5cf3 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-45.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-45.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-47.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-47.jpg old mode 100755 new mode 100644 index 171a0ecf4..f21d1573a Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-47.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-47.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-54.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-54.jpg old mode 100755 new mode 100644 index 3185fa364..20c98892a Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-54.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-54.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-6.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-6.jpg old mode 100755 new mode 100644 index 672252c0d..1aabbe2d1 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-6.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-6.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-60.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-60.jpg old mode 100755 new mode 100644 index db0968873..6248b53be Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-60.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-60.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-86.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-86.jpg old mode 100755 new mode 100644 index 78b60e72e..9183832fc Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-86.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie-86.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(219_von_80).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(219_von_80).jpg old mode 100755 new mode 100644 index 66a253e2e..e00c052a3 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(219_von_80).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(219_von_80).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(225_von_80).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(225_von_80).jpg old mode 100755 new mode 100644 index 30b4aa7d8..86ce6c7eb Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(225_von_80).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(225_von_80).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(227_von_80).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(227_von_80).jpg old mode 100755 new mode 100644 index 9c99b9b78..c7016d95a Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(227_von_80).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(227_von_80).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(235_von_80).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(235_von_80).jpg old mode 100755 new mode 100644 index f12fa77e3..5ea856ec7 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(235_von_80).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(235_von_80).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(247_von_80).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(247_von_80).jpg old mode 100755 new mode 100644 index e095a6862..f65d2b187 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(247_von_80).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(247_von_80).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(249_von_80).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(249_von_80).jpg old mode 100755 new mode 100644 index cfc50b390..641d185e8 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(249_von_80).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(249_von_80).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(24_von_99)_groß2.jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(24_von_99)_groß2.jpg old mode 100755 new mode 100644 index 5dbe73374..80e78ac8d Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(24_von_99)_groß2.jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(24_von_99)_groß2.jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(250_von_80).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(250_von_80).jpg old mode 100755 new mode 100644 index c7d3fb5ed..e124f1f27 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(250_von_80).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(250_von_80).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(257_von_80).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(257_von_80).jpg old mode 100755 new mode 100644 index b9c7881aa..071cc32d0 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(257_von_80).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(257_von_80).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(26_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(26_von_99).jpg old mode 100755 new mode 100644 index 76d823df5..75749beb5 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(26_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(26_von_99).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(2_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(2_von_99).jpg old mode 100755 new mode 100644 index 46100a479..796b7c8aa Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(2_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(2_von_99).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(38_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(38_von_99).jpg old mode 100755 new mode 100644 index 463f9ea5a..51a9f6236 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(38_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(38_von_99).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(66_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(66_von_99).jpg old mode 100755 new mode 100644 index e3d96ceb4..f8d36367f Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(66_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(66_von_99).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(6_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(6_von_99).jpg old mode 100755 new mode 100644 index c4867f890..d407e7e2b Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(6_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(6_von_99).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(71_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(71_von_99).jpg old mode 100755 new mode 100644 index cc5df38c3..229bc33ea Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(71_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(71_von_99).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(80_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(80_von_99).jpg old mode 100755 new mode 100644 index 56ba3f4f4..e2ef40b67 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(80_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(80_von_99).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(83_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(83_von_99).jpg old mode 100755 new mode 100644 index e4596a409..d3f436937 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(83_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(83_von_99).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(95_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(95_von_99).jpg old mode 100755 new mode 100644 index 2159d1cfa..04f0ea24c Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(95_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(95_von_99).jpg differ diff --git a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(98_von_99).jpg b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(98_von_99).jpg old mode 100755 new mode 100644 index dc8356993..2dc384011 Binary files a/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(98_von_99).jpg and b/public/assets/photos/Etib_E-tib_Tiefbau_Guben_Netzanbindung_Energie_Vermessung_(98_von_99).jpg differ diff --git a/public/assets/photos/IMG_6070.jpg b/public/assets/photos/IMG_6070.jpg index 5469c9416..0fe16d373 100644 Binary files a/public/assets/photos/IMG_6070.jpg and b/public/assets/photos/IMG_6070.jpg differ diff --git a/public/assets/photos/IMG_6083.jpg b/public/assets/photos/IMG_6083.jpg index af0388931..3598253f5 100644 Binary files a/public/assets/photos/IMG_6083.jpg and b/public/assets/photos/IMG_6083.jpg differ diff --git a/public/assets/photos/IMG_6100.jpg b/public/assets/photos/IMG_6100.jpg index 69bae705f..7e3b80ba8 100644 Binary files a/public/assets/photos/IMG_6100.jpg and b/public/assets/photos/IMG_6100.jpg differ diff --git a/public/assets/photos/Screenshot_2025-09-30_085237.png b/public/assets/photos/Screenshot_2025-09-30_085237.png old mode 100755 new mode 100644 index edf5839e5..05e995f8f Binary files a/public/assets/photos/Screenshot_2025-09-30_085237.png and b/public/assets/photos/Screenshot_2025-09-30_085237.png differ diff --git a/public/assets/photos/Screenshot_2025-09-30_085339.png b/public/assets/photos/Screenshot_2025-09-30_085339.png old mode 100755 new mode 100644 index 0cea0d1c6..3ca95900a Binary files a/public/assets/photos/Screenshot_2025-09-30_085339.png and b/public/assets/photos/Screenshot_2025-09-30_085339.png differ diff --git a/public/assets/photos/Screenshot_2025-09-30_085736.png b/public/assets/photos/Screenshot_2025-09-30_085736.png old mode 100755 new mode 100644 index 39bf6386a..1f5794fa9 Binary files a/public/assets/photos/Screenshot_2025-09-30_085736.png and b/public/assets/photos/Screenshot_2025-09-30_085736.png differ diff --git a/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-256.jpg b/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-256.jpg old mode 100755 new mode 100644 index f700d6496..d3ad0b65a Binary files a/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-256.jpg and b/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-256.jpg differ diff --git a/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-27.jpg b/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-27.jpg old mode 100755 new mode 100644 index 84b1adf11..4980db8e9 Binary files a/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-27.jpg and b/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-27.jpg differ diff --git a/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-294.jpg b/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-294.jpg old mode 100755 new mode 100644 index b9b4a8aad..11fd43e5a Binary files a/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-294.jpg and b/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-294.jpg differ diff --git a/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-298.jpg b/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-298.jpg old mode 100755 new mode 100644 index 05056bbdf..93ba9d0a0 Binary files a/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-298.jpg and b/public/assets/photos/etib_ingenieure_tiefbau_solar_pv_planung_vermessung_gis-298.jpg differ diff --git a/public/assets/photos/image003.png b/public/assets/photos/image003.png index 3977dffbe..3d03549ea 100644 Binary files a/public/assets/photos/image003.png and b/public/assets/photos/image003.png differ diff --git a/public/assets/photos/image004.png b/public/assets/photos/image004.png index a32f9ae97..e5bb69448 100644 Binary files a/public/assets/photos/image004.png and b/public/assets/photos/image004.png differ diff --git a/scripts/generate-placeholders.ts b/scripts/generate-placeholders.ts new file mode 100644 index 000000000..133626106 --- /dev/null +++ b/scripts/generate-placeholders.ts @@ -0,0 +1,44 @@ +import fs from 'fs'; +import path from 'path'; +import sharp from 'sharp'; + +const PUBLIC_DIR = path.join(process.cwd(), 'public'); +const IMAGES_TO_PROCESS = [ + '/assets/photos/DJI_0048.JPG', + '/assets/videos/web/hero-bahnkreuzung-poster.jpg', + '/assets/videos/web/hero-bohrung-poster.jpg', + '/assets/videos/web/hero-kabelpflug-poster.jpg', + '/assets/videos/web/hero-messe-poster.jpg', +]; + +async function generatePlaceholders() { + const placeholders: Record = {}; + + for (const imagePath of IMAGES_TO_PROCESS) { + const fullPath = path.join(PUBLIC_DIR, imagePath); + if (!fs.existsSync(fullPath)) { + console.warn(`File not found: ${fullPath}`); + continue; + } + + try { + const buffer = await sharp(fullPath) + .resize(10, 10, { fit: 'inside' }) + .blur(2) // Adding slight blur + .webp({ quality: 20 }) + .toBuffer(); + + const base64 = `data:image/webp;base64,${buffer.toString('base64')}`; + placeholders[imagePath] = base64; + console.log(`Generated placeholder for ${imagePath}`); + } catch (e) { + console.error(`Failed to generate placeholder for ${imagePath}`, e); + } + } + + const outputPath = path.join(process.cwd(), 'lib', 'placeholders.json'); + fs.writeFileSync(outputPath, JSON.stringify(placeholders, null, 2)); + console.log(`Saved placeholders to ${outputPath}`); +} + +generatePlaceholders(); diff --git a/scripts/optimize-images.ts b/scripts/optimize-images.ts new file mode 100644 index 000000000..4f6e97217 --- /dev/null +++ b/scripts/optimize-images.ts @@ -0,0 +1,41 @@ +import fs from 'fs'; +import path from 'path'; +import sharp from 'sharp'; + +const PHOTOS_DIR = path.join(process.cwd(), 'public', 'assets', 'photos'); + +async function optimizeImages() { + const files = fs.readdirSync(PHOTOS_DIR); + let optimized = 0; + + for (const file of files) { + if (!file.match(/\.(jpg|jpeg|png)$/i)) continue; + + const filePath = path.join(PHOTOS_DIR, file); + const metadata = await sharp(filePath).metadata(); + + // If image is larger than 1920px wide, or is a massive file + if ((metadata.width && metadata.width > 1920) || fs.statSync(filePath).size > 1024 * 1024) { + console.log(`Optimizing ${file} (Width: ${metadata.width}, Size: ${Math.round(fs.statSync(filePath).size / 1024)}KB)`); + + const tmpPath = `${filePath}.tmp`; + try { + await sharp(filePath) + .resize({ width: 1920, withoutEnlargement: true }) + .jpeg({ quality: 80, progressive: true }) + .toFile(tmpPath); + + fs.renameSync(tmpPath, filePath); + console.log(`✅ Optimized ${file} (New Size: ${Math.round(fs.statSync(filePath).size / 1024)}KB)`); + optimized++; + } catch (err) { + console.error(`Failed to optimize ${file}`, err); + if (fs.existsSync(tmpPath)) fs.unlinkSync(tmpPath); + } + } + } + + console.log(`Finished optimizing ${optimized} images.`); +} + +optimizeImages();