diff --git a/src/components/Lightbox.astro b/src/components/Lightbox.astro new file mode 100644 index 0000000..6f53c9f --- /dev/null +++ b/src/components/Lightbox.astro @@ -0,0 +1,233 @@ +--- +interface Props { + src: string; + alt: string; + width: number; + height: number; + loading?: 'eager' | 'lazy'; + caption?: string; + triggerClass?: string; + imgClass?: string; +} + +const { + src, + alt, + width, + height, + loading = 'lazy', + caption, + triggerClass = '', + imgClass = 'block w-full h-auto', +} = Astro.props; + +// Unique per-instance id so multiple lightboxes on a page do not collide. +const dialogId = `lb-${Math.random().toString(36).slice(2, 10)}`; +--- + + + +

{alt}

+ + {alt} + {caption && } +
+ + + + diff --git a/src/components/sections/Hero.astro b/src/components/sections/Hero.astro index dad984c..14301fb 100644 --- a/src/components/sections/Hero.astro +++ b/src/components/sections/Hero.astro @@ -1,6 +1,7 @@ --- import CTAButtons from '../CTAButtons.astro'; import TopographicBg from '../TopographicBg.astro'; +import Lightbox from '../Lightbox.astro'; ---
@@ -37,14 +38,12 @@ import TopographicBg from '../TopographicBg.astro';
- Cameleer Mission Control — route execution detail with processor-level trace
diff --git a/src/components/sections/ProductShowcase.astro b/src/components/sections/ProductShowcase.astro index e600a54..863ae1a 100644 --- a/src/components/sections/ProductShowcase.astro +++ b/src/components/sections/ProductShowcase.astro @@ -1,5 +1,6 @@ --- import TopographicBg from '../TopographicBg.astro'; +import Lightbox from '../Lightbox.astro'; interface Callout { title: string; @@ -37,14 +38,12 @@ const callouts: Callout[] = [
- Cameleer Mission Control — complex fulfillment route with circuit breaker, fallback, correlated audit route, and full error context