Deploy
This commit is contained in:
@@ -0,0 +1,189 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { useEmDashContent } from '@/hooks/useEmDashContent'
|
||||||
|
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card'
|
||||||
|
import { Car, Clock, Lock, Mail, MapPin, Phone, Shield, Wifi } from 'lucide-react'
|
||||||
|
import Image from 'next/image'
|
||||||
|
|
||||||
|
export default function FindUsInNatureSection() {
|
||||||
|
const { items, loading } = useEmDashContent('business_hours')
|
||||||
|
|
||||||
|
if (loading) {
|
||||||
|
return (
|
||||||
|
<div className="flex justify-center py-16">
|
||||||
|
<div className="w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin" />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (items.length === 0) return null
|
||||||
|
|
||||||
|
const hours = items.map((item) => {
|
||||||
|
const d = item.data as {
|
||||||
|
day_of_week?: string
|
||||||
|
open_time?: string
|
||||||
|
close_time?: string
|
||||||
|
is_closed?: boolean
|
||||||
|
note?: string
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
day: d.day_of_week ?? '',
|
||||||
|
open: d.open_time ?? '',
|
||||||
|
close: d.close_time ?? '',
|
||||||
|
closed: d.is_closed ?? false,
|
||||||
|
note: d.note ?? ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
return (
|
||||||
|
<section
|
||||||
|
id="find-us-in-nature"
|
||||||
|
data-vula-section="findusinnature"
|
||||||
|
data-vula-cms="business_hours"
|
||||||
|
className="py-20 px-6 bg-white"
|
||||||
|
>
|
||||||
|
<div className="max-w-6xl mx-auto">
|
||||||
|
<div className="text-center mb-12">
|
||||||
|
<h2 className="text-4xl font-bold text-[#111827] mb-2">
|
||||||
|
Find Us in Nature
|
||||||
|
</h2>
|
||||||
|
<p className="text-lg text-gray-600 max-w-2xl mx-auto">
|
||||||
|
Nestled in the quiet suburb of Bisley, just a stone's throw from the airport
|
||||||
|
and the Ukulinga Nature Reserve – your peaceful home-away-from-home.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8">
|
||||||
|
{/* Left column: address & contact */}
|
||||||
|
<Card className="rounded-xl border border-neutral-100 bg-white shadow-[var(--shadow-card)] hover:shadow-[var(--shadow-lifted)] transition-all duration-200 ease-out">
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle className="text-2xl font-semibold text-[#111827] flex items-center gap-2">
|
||||||
|
<MapPin className="w-5 h-5 text-[#8b5a3c]" />
|
||||||
|
Our Location
|
||||||
|
</CardTitle>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent className="space-y-4">
|
||||||
|
<div className="flex items-start gap-3">
|
||||||
|
<MapPin className="w-5 h-5 text-[#d4af37] mt-1 shrink-0" />
|
||||||
|
<div>
|
||||||
|
<p className="font-medium text-[#111827]">44 Rutherford Circle</p>
|
||||||
|
<p className="text-gray-600">Bisley, Pietermaritzburg, 3201</p>
|
||||||
|
<p className="text-gray-600">KwaZulu-Natal, South Africa</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex items-start gap-3">
|
||||||
|
<Phone className="w-5 h-5 text-[#d4af37] mt-1 shrink-0" />
|
||||||
|
<div>
|
||||||
|
<p className="font-medium text-[#111827]">+27 33 000 0000</p>
|
||||||
|
<p className="text-sm text-gray-500">Call us direct</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex items-start gap-3">
|
||||||
|
<Mail className="w-5 h-5 text-[#d4af37] mt-1 shrink-0" />
|
||||||
|
<div>
|
||||||
|
<p className="font-medium text-[#111827]">info@kwantofontofo.co.za</p>
|
||||||
|
<p className="text-sm text-gray-500">We reply within 2 hours</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex flex-wrap gap-3 mt-6">
|
||||||
|
<div className="flex items-center gap-2 text-sm text-gray-600 bg-gray-50 px-3 py-2 rounded-full">
|
||||||
|
<Car className="w-4 h-4 text-[#16a34a]" />
|
||||||
|
Secure Parking
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-2 text-sm text-gray-600 bg-gray-50 px-3 py-2 rounded-full">
|
||||||
|
<Lock className="w-4 h-4 text-[#16a34a]" />
|
||||||
|
Burglar Alarm
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-2 text-sm text-gray-600 bg-gray-50 px-3 py-2 rounded-full">
|
||||||
|
<Wifi className="w-4 h-4 text-[#16a34a]" />
|
||||||
|
Free Wi-Fi
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
|
||||||
|
{/* Right column: hours & landmarks */}
|
||||||
|
<div className="space-y-6">
|
||||||
|
{/* Business Hours */}
|
||||||
|
<Card className="rounded-xl border border-neutral-100 bg-white shadow-[var(--shadow-card)]">
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle className="text-2xl font-semibold text-[#111827] flex items-center gap-2">
|
||||||
|
<Clock className="w-5 h-5 text-[#8b5a3c]" />
|
||||||
|
Reception Hours
|
||||||
|
</CardTitle>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent>
|
||||||
|
<div className="space-y-1">
|
||||||
|
{hours.map((h, idx) => (
|
||||||
|
<div
|
||||||
|
key={idx}
|
||||||
|
className="flex justify-between items-center py-1 border-b border-gray-100 last:border-0"
|
||||||
|
>
|
||||||
|
<span className="font-medium text-[#111827] w-28">{h.day}</span>
|
||||||
|
{h.closed ? (
|
||||||
|
<span className="text-red-500 text-sm font-medium">Closed</span>
|
||||||
|
) : (
|
||||||
|
<span className="text-gray-700">
|
||||||
|
{h.open} – {h.close}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
{h.note && (
|
||||||
|
<span className="text-xs text-gray-400 ml-2">({h.note})</span>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
|
||||||
|
{/* Nearby landmarks */}
|
||||||
|
<Card className="rounded-xl border border-neutral-100 bg-white shadow-[var(--shadow-card)]">
|
||||||
|
<CardHeader>
|
||||||
|
<CardTitle className="text-2xl font-semibold text-[#111827] flex items-center gap-2">
|
||||||
|
<MapPin className="w-5 h-5 text-[#8b5a3c]" />
|
||||||
|
What's Nearby
|
||||||
|
</CardTitle>
|
||||||
|
</CardHeader>
|
||||||
|
<CardContent>
|
||||||
|
<ul className="space-y-2">
|
||||||
|
<li className="flex items-center gap-3">
|
||||||
|
<span className="w-2 h-2 bg-[#d4af37] rounded-full" />
|
||||||
|
<span className="text-gray-700">1 km – Pietermaritzburg Airport</span>
|
||||||
|
</li>
|
||||||
|
<li className="flex items-center gap-3">
|
||||||
|
<span className="w-2 h-2 bg-[#d4af37] rounded-full" />
|
||||||
|
<span className="text-gray-700">4 km – UKZN University</span>
|
||||||
|
</li>
|
||||||
|
<li className="flex items-center gap-3">
|
||||||
|
<span className="w-2 h-2 bg-[#d4af37] rounded-full" />
|
||||||
|
<span className="text-gray-700">4–8 km – Major shopping centres</span>
|
||||||
|
</li>
|
||||||
|
<li className="flex items-center gap-3">
|
||||||
|
<span className="w-2 h-2 bg-[#d4af37] rounded-full" />
|
||||||
|
<span className="text-gray-700">Across the road – Ukulinga Nature Reserve</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Map placeholder */}
|
||||||
|
<div className="mt-10 rounded-xl overflow-hidden shadow-[var(--shadow-lifted)]">
|
||||||
|
<div className="relative h-64 w-full">
|
||||||
|
<Image
|
||||||
|
src="https://images.pexels.com/photos/13871326/pexels-photo-13871326.jpeg?auto=compress&cs=tinysrgb&h=350"
|
||||||
|
alt="Aerial view of Bisley, Pietermaritzburg"
|
||||||
|
fill
|
||||||
|
sizes="(max-width: 768px) 100vw, 50vw"
|
||||||
|
className="object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user