id; // Convert hex overlay colour to rgba $r = hexdec(substr($overlayColor, 1, 2)); $g = hexdec(substr($overlayColor, 3, 2)); $b = hexdec(substr($overlayColor, 5, 2)); $rgbaOpaque = "rgba($r, $g, $b, $overlayOpacity)"; $rgbaTransparent = "rgba($r, $g, $b, 0)"; // Build overlay background based on type $overlayDirections = [ 'gradient-bottom' => 'to bottom', 'gradient-top' => 'to top', 'gradient-left' => 'to left', 'gradient-right' => 'to right', ]; // Skip overlay on solid colour/gradient modes — background is already a controlled design choice if ($heroMode === 'color' || $heroMode === 'gradient') { $overlayBg = ''; } elseif ($overlayType !== 'solid' && isset($overlayDirections[$overlayType])) { $dir = $overlayDirections[$overlayType]; $overlayBg = "background: linear-gradient($dir, $rgbaTransparent, $rgbaOpaque);"; } else { $overlayBg = "background-color: $rgbaOpaque;"; } // Map vertical alignment to CSS align-items $valignMap = ['top' => 'flex-start', 'center' => 'center', 'bottom' => 'flex-end']; $valignCss = $valignMap[$verticalAlign] ?? 'center'; $heightAttr = htmlspecialchars($heroHeight, ENT_QUOTES, 'UTF-8'); ?>
data-parallax="" 1) : ?> data-slides="" data-interval="" data-transition="" data-slide-content="" >
$img) : ?>
title; $showTitle = ($contentSource === 'article' && $useArticleTitle && $articleTitle) || $module->showtitle; ?>
style="animation-delay: ms;" data-card-delay="">