Compare commits
2 Commits
0d4b087601
...
802d47b813
Author | SHA1 | Date | |
---|---|---|---|
802d47b813 | |||
cda80f878e |
@@ -14,7 +14,7 @@ import useMeasure from 'react-use-measure'
|
|||||||
import { Container } from './Container'
|
import { Container } from './Container'
|
||||||
import { Link } from './link'
|
import { Link } from './link'
|
||||||
import { Heading, Subheading, H2, P, PS, H3} from './text'
|
import { Heading, Subheading, H2, P, PS, H3} from './text'
|
||||||
|
import { Button } from './Button'
|
||||||
|
|
||||||
const testimonials = [
|
const testimonials = [
|
||||||
{
|
{
|
||||||
@@ -99,9 +99,8 @@ function TestimonialCard({
|
|||||||
return (
|
return (
|
||||||
<motion.div
|
<motion.div
|
||||||
ref={ref}
|
ref={ref}
|
||||||
style={{ opacity }}
|
|
||||||
{...props}
|
{...props}
|
||||||
className="w-72 shrink-0 snap-start scroll-ml-(--scroll-padding) bg-transparent shadow-sm overflow-hidden sm:w-80 lg:w-96"
|
className="w-72 shrink-0 snap-start scroll-ml-(--scroll-padding) bg-transparent overflow-hidden sm:w-80 lg:w-96"
|
||||||
>
|
>
|
||||||
{/* Image Section */}
|
{/* Image Section */}
|
||||||
<div className="relative aspect-square overflow-hidden">
|
<div className="relative aspect-square overflow-hidden">
|
||||||
@@ -120,17 +119,18 @@ function TestimonialCard({
|
|||||||
</H3>
|
</H3>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<PS className="mt-2 lg:text-base text-sm text-gray-600 leading-6">
|
<PS className="mt-2 mb-4">
|
||||||
{subtitle}
|
{subtitle}
|
||||||
</PS>
|
</PS>
|
||||||
|
|
||||||
<Link
|
<Button
|
||||||
href={href}
|
href={href}
|
||||||
className="mt-2 mb-2 inline-flex items-center gap-2 text-sm font-semibold text-gold-700 hover:text-gold-700"
|
variant="link"
|
||||||
|
color="darkgr"
|
||||||
|
className="mt-2 mb-2 "
|
||||||
>
|
>
|
||||||
Learn More
|
Learn More
|
||||||
<ArrowLongRightIcon className="h-4 w-4" />
|
</Button>
|
||||||
</Link>
|
|
||||||
</div>
|
</div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
)
|
)
|
||||||
@@ -141,10 +141,16 @@ export function Boat() {
|
|||||||
let { scrollX } = useScroll({ container: scrollRef })
|
let { scrollX } = useScroll({ container: scrollRef })
|
||||||
let [setReferenceWindowRef, bounds] = useMeasure()
|
let [setReferenceWindowRef, bounds] = useMeasure()
|
||||||
let [activeIndex, setActiveIndex] = useState(0)
|
let [activeIndex, setActiveIndex] = useState(0)
|
||||||
|
let [scrollProgress, setScrollProgress] = useState(0)
|
||||||
|
|
||||||
useMotionValueEvent(scrollX, 'change', (x) => {
|
useMotionValueEvent(scrollX, 'change', (x) => {
|
||||||
if (scrollRef.current && scrollRef.current.children[0]) {
|
if (scrollRef.current && scrollRef.current.children[0]) {
|
||||||
setActiveIndex(Math.floor(x / scrollRef.current.children[0].clientWidth))
|
setActiveIndex(Math.floor(x / scrollRef.current.children[0].clientWidth))
|
||||||
|
|
||||||
|
// Calculate scroll progress
|
||||||
|
const maxScroll = scrollRef.current.scrollWidth - scrollRef.current.clientWidth
|
||||||
|
const progress = maxScroll > 0 ? (x / maxScroll) * 100 : 0
|
||||||
|
setScrollProgress(Math.min(100, Math.max(0, progress)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -166,6 +172,12 @@ export function Boat() {
|
|||||||
<PS className="mt-4">
|
<PS className="mt-4">
|
||||||
Discover peaceful platforms where every detail ensures a truly memorable stay.
|
Discover peaceful platforms where every detail ensures a truly memorable stay.
|
||||||
</PS>
|
</PS>
|
||||||
|
<PS className="mt-2 mb-6">
|
||||||
|
Our fleet of traditional dahabiyas combines authentic Nile heritage with modern comfort, offering intimate sailing experiences that connect you with Egypt's timeless river culture.
|
||||||
|
</PS>
|
||||||
|
<Button href="/dahabiyas" variant="link" color="darkgr" className="mt-6">
|
||||||
|
Learn More
|
||||||
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Carousel - Right Side */}
|
{/* Carousel - Right Side */}
|
||||||
@@ -196,6 +208,19 @@ export function Boat() {
|
|||||||
))}
|
))}
|
||||||
<div className="w-8 shrink-0" />
|
<div className="w-8 shrink-0" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Progress Bar */}
|
||||||
|
<div className="mt-6 mx-6 lg:mx-0 flex justify-center">
|
||||||
|
<div className="w-32 bg-gray-500 rounded-full h-0.5 relative">
|
||||||
|
<div
|
||||||
|
className="bg-darkgr-900 h-0.5 rounded-full transition-all duration-300 ease-out"
|
||||||
|
style={{ width: `${scrollProgress}%` }}
|
||||||
|
/>
|
||||||
|
{/* Progress dots for visual clarity */}
|
||||||
|
<div className="absolute -top-1 left-0 w-2 h-2 bg-darkgr-900 rounded-full transform -translate-x-1"></div>
|
||||||
|
<div className="absolute -top-1 right-0 w-2 h-2 bg-gray-400 rounded-full transform translate-x-1"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Container>
|
</Container>
|
||||||
|
@@ -35,7 +35,7 @@ const variantStyles = {
|
|||||||
white:
|
white:
|
||||||
'text-white hover:text-slate-300 focus-visible:outline-white border-b border-white hover:border-slate-300',
|
'text-white hover:text-slate-300 focus-visible:outline-white border-b border-white hover:border-slate-300',
|
||||||
darkgr:
|
darkgr:
|
||||||
'text-darkgr-900 hover:text-darkgr-700 focus-visible:outline-darkgr-600 border-b border-darkgr-900 hover:border-darkgr-700',
|
'text-sm tracking-wide text-darkgr-900 hover:text-darkgr-700 focus-visible:outline-darkgr-600 border-b border-darkgr-900 hover:border-darkgr-700',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@ export function CallToAction() {
|
|||||||
return (
|
return (
|
||||||
<section
|
<section
|
||||||
id="about"
|
id="about"
|
||||||
className="relative overflow-hidden bg-bg-sand py-24"
|
className="relative overflow-hidden bg-bg-sand py-16"
|
||||||
>
|
>
|
||||||
<Container className="relative">
|
<Container className="relative">
|
||||||
<div className="mx-auto max-w-3xl text-center">
|
<div className="mx-auto max-w-3xl text-center">
|
||||||
|
@@ -8,12 +8,12 @@ import Image from 'next/image'
|
|||||||
export function Hero() {
|
export function Hero() {
|
||||||
return (
|
return (
|
||||||
<div className=" max-w-8xl px-6 lg:px-8 -z-10 -mt-5 mx-0 bg-bg-sand pb-12">
|
<div className=" max-w-8xl px-6 lg:px-8 -z-10 -mt-5 mx-0 bg-bg-sand pb-12">
|
||||||
{/* Background Image with opacity to show sand background */}
|
{/* Background Image with opacity to show sand background i changed the src for now bc its not uploaded to server*/}
|
||||||
<div className="relative overflow-hidden">
|
<div className="relative overflow-hidden">
|
||||||
<div className="mx-auto max-w-7xl">
|
<div className="mx-auto max-w-7xl">
|
||||||
<img
|
<img
|
||||||
alt="App screenshot"
|
alt="App screenshot"
|
||||||
src="/images/hero.jpg"
|
src="https://i.postimg.cc/y1HZZFQP/hero.jpg"
|
||||||
width={1360}
|
width={1360}
|
||||||
height={600}
|
height={600}
|
||||||
/>
|
/>
|
||||||
@@ -23,13 +23,13 @@ export function Hero() {
|
|||||||
<H2 className="mt-8">
|
<H2 className="mt-8">
|
||||||
Nile Cruises, Reimagined.
|
Nile Cruises, Reimagined.
|
||||||
</H2>
|
</H2>
|
||||||
<P className="mt-4">
|
<P className="mt-4 mb-6">
|
||||||
Veda welcomes you into her home providing unique wellness cruises blending cultural authentic experiences with unparalleled freedom and privacy.<br/>
|
Veda welcomes you into her home providing unique wellness cruises blending cultural authentic experiences with unparalleled freedom and privacy.<br/>
|
||||||
Our organic cuisine, cultural activities and dedicated warm hearted crew will make your veda cruise an unforgettable experience.
|
Our organic cuisine, cultural activities and dedicated warm hearted crew will make your veda cruise an unforgettable experience.
|
||||||
</P>
|
</P>
|
||||||
<button className="mt-6 text-sm lg:text-sm tracking-wide" variant="link" color="darkgr">
|
<Button href="/story" variant="link" color="darkgr">
|
||||||
Learn More
|
Learn More
|
||||||
</button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user