+
+
Our Story
+
THE TALE OF SACRED ENERGIES OF THE NILE
+
Our founders, Isabelle Peeters and Kristof De Spiegeleer fell in love with the Nile and envisioned creating authentic, zen, art dahabeya to feel and experience in a unique way the mystical and the deep wisdom of the Nile.
-
+
Their dream was to offer a sanctuary for the body, mind, and soul, a safe space to open yourself to new experiences, and allow the sacredness of the Nile to flow through you, to step back in the past, to align with the now helping you to reconnect with your true essence. A sanctuary for the body, mind, and soul, a safe space.
@@ -40,7 +46,7 @@ export function Hero3() {
diff --git a/src/components/Hero4.jsx b/src/components/Hero4.jsx
index 8102302..b68f833 100644
--- a/src/components/Hero4.jsx
+++ b/src/components/Hero4.jsx
@@ -6,41 +6,41 @@ import { ChevronDownIcon } from '@heroicons/react/24/outline'
export function Hero4() {
const scrollDown = () => {
- // Scroll to Hero5 (3rd section) - account for Hero3 + Hero4 heights
- const hero3Height = window.innerHeight * 0.9; // Hero3 is 90vh
- const hero4Height = document.querySelector('img[src="/images/hero_story2.jpg"]')?.offsetHeight || window.innerHeight;
- window.scrollTo({
- top: hero3Height + hero4Height,
- behavior: 'smooth'
- })
+ const el = document.getElementById('section-3');
+ if (!el) return;
+ const offset = 88;
+ const y = el.getBoundingClientRect().top + window.scrollY - offset;
+ window.scrollTo({ top: y, behavior: 'smooth' });
}
+
return (
-
- {/* Background Image - Extended to cover header */}
+

-
- {/* Black Overlay */}
-
-
- {/* Content */}
-
-
-
+
+
+
+
+
+
We are unique in the market as the cruises are designed to provide for a private, personalised and wellness experience on the River Nile. Families, communities or dedicated groups up to sixty people can sail the Nile together discovering her hidden treasures. The Nile is a powerful natural energy source, and the boats are designed to help you align with its frequencies to feel the magic carried by sacred waters of the Nile.
-
+
Frequencies are the new currency. Our mission is to help you recognize and align with different frequencies, creating a deeply fulfilling life in tune with your soul's gifts. Self-knowledge and self-mastery are the keys to fully opening your heart. By understanding and resonating with these frequencies, you can achieve a life of harmony and fulfillment.
-
- {/* Chevron Down Button */}
+
-
diff --git a/src/components/Hero5.jsx b/src/components/Hero5.jsx
index 2bb6686..38e22d0 100644
--- a/src/components/Hero5.jsx
+++ b/src/components/Hero5.jsx
@@ -7,30 +7,32 @@ import { ChevronUpIcon } from '@heroicons/react/24/outline'
export function Hero5() {
return (
-
- {/* Background Image - Extended to cover header */}
+

-
- {/* Black Overlay */}
-
-
- {/* Content */}
-
-
-
+
+
+
+
+
+
Are you ready to step out of your comfort zone and embrace these changes? Can you let the new energies flow through you and break free from outdated programs to welcome new wisdom?
-
+
Together, let us open new gates of consciousness and expand the flow of unconditional love. The magical energy of the Nile is ready to flow through us, uniting us in a heartbeat. Home is calling you, inviting you to a journey of inner discovery and profound connection.
- With Love,
- Kristof & Isabelle
-
+
With Love,
+
Kristof & Isabelle
+
)
}
diff --git a/src/components/Logo.jsx b/src/components/Logo.jsx
index 244cc4c..25fd8d6 100644
--- a/src/components/Logo.jsx
+++ b/src/components/Logo.jsx
@@ -17,9 +17,9 @@ const SvgIcon = (props) => (
maskUnits="userSpaceOnUse"
style={{ maskType: "luminance" }}
>
-
+
-
+
@@ -29,7 +29,7 @@ const SvgIcon = (props) => (
diff --git a/src/components/StorySticky.jsx b/src/components/StorySticky.jsx
new file mode 100644
index 0000000..ba9200f
--- /dev/null
+++ b/src/components/StorySticky.jsx
@@ -0,0 +1,99 @@
+'use client';
+
+import Image from 'next/image';
+import React, { useEffect, useMemo, useRef, useState } from 'react';
+
+export default function StorySticky({ children }) {
+ const [sections, setSections] = useState([]);
+ const [activeIdx, setActiveIdx] = useState(0);
+ const containerRef = useRef(null);
+
+ const prefersReducedMotion = useMemo(
+ () =>
+ typeof window !== 'undefined' &&
+ window.matchMedia?.('(prefers-reduced-motion: reduce)').matches,
+ []
+ );
+
+ // Collect sections from children after mount
+ useEffect(() => {
+ if (!containerRef.current) return;
+ const nodes = Array.from(
+ containerRef.current.querySelectorAll('[data-story-section]')
+ );
+
+ const list = nodes.map((el, i) => ({
+ id: el.id || `section-${i + 1}`,
+ image: el.dataset.image || '',
+ el,
+ }));
+ setSections(list);
+
+ const io = new IntersectionObserver(
+ (entries) => {
+ const visible = entries
+ .filter((e) => e.isIntersecting)
+ .sort((a, b) => b.intersectionRatio - a.intersectionRatio)[0];
+ if (!visible) return;
+ const idx = list.findIndex((s) => s.el === visible.target);
+ if (idx >= 0) setActiveIdx(idx);
+ },
+ {
+ root: null,
+ threshold: [0.3, 0.6, 0.9],
+ rootMargin: '0px 0px -30% 0px',
+ }
+ );
+
+ nodes.forEach((n) => io.observe(n));
+ return () => io.disconnect();
+ }, [children]);
+
+ return (
+
+ {/* Mobile: render as-is */}
+ {children}
+
+ {/* Desktop: 2-col layout with sticky media */}
+
+ {/* Sticky left media */}
+
+
+
+ {sections.map((s, i) => (
+
+ {s.image ? (
+
+ ) : (
+
+ )}
+
+
+ ))}
+
+
+
+
+ {/* Right column = the original heroes (but with their own media hidden via lg:hidden) */}
+
+ {children}
+
+
+
+ );
+}