--- /** * InterestHero.astro * --------------------------------------------------------------------------- * Shared header for every interest sub-page. Compact hero on the animated * Milky Way field: a back-to-hub breadcrumb, a small icon mark, the title, and * the italic tagline. * * Tuned for the dark starfield: text uses bright cream tones (not the dim * --color-text-subtle/--color-text which vanish on the deep sky). The title is * h2-sized (the page is a sub-page, not Home) so it doesn't dominate. An * optional banner image sits above the heading. */ import Icon from '@components/Icon.astro'; import Reveal from '@components/motion/Reveal.astro'; import AnimatedBackground from '@components/hero/AnimatedBackground.tsx'; import StarBurst from '@components/mystic/StarBurst.astro'; interface Props { /** mdi icon used as the decorative mark. */ icon: string; title: string; /** The italicized pull-quote tagline from the spec. */ tagline: string; /** Back-to-hub breadcrumb label. */ eyebrow?: string; /** Optional hero banner image (vibe-matched stock; swap for real photos). */ image?: string; imageAlt?: string; } const { icon, title, tagline, eyebrow = 'Interests', image, imageAlt = '', } = Astro.props; ---
{/* Two-column layout: text on the left, image on the right. Putting the image BESIDE the text (instead of stacked above it) means the hero height is driven by the text column and stays consistent across interest pages regardless of image presence. On small screens it stacks (image below). */}
{/* --- Left: text column --- */}
{eyebrow}

{title}

{tagline}

{/* --- Right: image column (only when an image is provided). A fixed aspect keeps every interest hero the same height. --- */} {image && (
{imageAlt}
)}