Deploy
This commit is contained in:
+440
@@ -0,0 +1,440 @@
|
|||||||
|
{
|
||||||
|
"projectName": "Zulwini Lodge",
|
||||||
|
"businessType": "hotel",
|
||||||
|
"industry": "hotel",
|
||||||
|
"tone": "",
|
||||||
|
"tier": 2,
|
||||||
|
"serviceType": "hotel",
|
||||||
|
"generatedAt": "2026-07-26T17:03:35.456Z",
|
||||||
|
"sections": [
|
||||||
|
{
|
||||||
|
"name": "HeroSection",
|
||||||
|
"importPath": "@/components/sections/HeroSection",
|
||||||
|
"position": 0,
|
||||||
|
"role": "hero",
|
||||||
|
"hasImage": true,
|
||||||
|
"hasForm": false,
|
||||||
|
"itemCount": 4,
|
||||||
|
"layout": "flex-row",
|
||||||
|
"headings": [],
|
||||||
|
"buttonLabels": [],
|
||||||
|
"people": [
|
||||||
|
"Zulwini Lodge"
|
||||||
|
],
|
||||||
|
"allText": [
|
||||||
|
"next/image",
|
||||||
|
"next/link",
|
||||||
|
"hero",
|
||||||
|
"relative min-h-[88vh] text-white",
|
||||||
|
"Zulwini Lodge",
|
||||||
|
"absolute inset-0 object-cover",
|
||||||
|
"100vw",
|
||||||
|
"absolute inset-0",
|
||||||
|
"linear-gradient(135deg, #ea580c, #2563eb)",
|
||||||
|
"absolute inset-0 bg-gradient-to-t from-black/60 via-black/30 to-black/10",
|
||||||
|
"absolute top-6 right-6 z-20 w-24 h-24 rounded-full flex items-center justify-center text-center text-[13px] font-bold leading-tight text-white -rotate-12",
|
||||||
|
"#ea580c",
|
||||||
|
"Fresh daily",
|
||||||
|
"relative z-10 flex flex-col items-center justify-center min-h-[88vh] text-center px-6",
|
||||||
|
"uppercase tracking-[0.1em] text-[12.5px] font-semibold text-white/70 mb-4",
|
||||||
|
"text-5xl lg:text-6xl font-extrabold tracking-[-0.02em] mb-6 max-w-4xl",
|
||||||
|
"A boutique lodge offering intimate luxury bush accommodation in KwaZulu",
|
||||||
|
"text-[#ea580c]",
|
||||||
|
"Natal, combining.",
|
||||||
|
"text-lg lg:text-xl text-white/80 max-w-2xl mb-9",
|
||||||
|
"Professional boutique lodge in South Africa.",
|
||||||
|
"inline-block bg-[#ea580c] text-white px-8 py-4 text-base font-bold rounded-xl shadow-lg hover:-translate-y-0.5 transition-all duration-200",
|
||||||
|
"Book a room"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "OurStorySection",
|
||||||
|
"importPath": "@/components/sections/OurStorySection",
|
||||||
|
"position": 1,
|
||||||
|
"role": "about",
|
||||||
|
"hasImage": true,
|
||||||
|
"hasForm": false,
|
||||||
|
"itemCount": 9,
|
||||||
|
"layout": "grid",
|
||||||
|
"headings": [
|
||||||
|
"Born from a love of Zululand"
|
||||||
|
],
|
||||||
|
"buttonLabels": [
|
||||||
|
"Read the full story"
|
||||||
|
],
|
||||||
|
"people": [],
|
||||||
|
"allText": [
|
||||||
|
"next/image",
|
||||||
|
"next/link",
|
||||||
|
"@/components/ui/Button",
|
||||||
|
"ourstory",
|
||||||
|
"our-story",
|
||||||
|
"py-20 bg-white",
|
||||||
|
"container mx-auto px-4",
|
||||||
|
"grid grid-cols-1 lg:grid-cols-2 gap-12 items-center",
|
||||||
|
"relative",
|
||||||
|
"relative overflow-hidden rounded-2xl shadow-[0_20px_50px_-12px_rgba(0,0,0,0.25)]",
|
||||||
|
"Zulwini Lodge — traditional Zulu welcome ceremony at sunset",
|
||||||
|
"object-cover w-full h-full",
|
||||||
|
"absolute -top-4 -right-4 w-28 h-28 bg-[#ea580c] rounded-full flex items-center justify-center rotate-12 shadow-lg",
|
||||||
|
"text-white font-bold text-sm text-center leading-tight",
|
||||||
|
"Family-run",
|
||||||
|
"since 2012",
|
||||||
|
"absolute -bottom-8 -left-8 w-64 h-48 rounded-2xl overflow-hidden shadow-xl rotate-[-3deg] hidden lg:block border-4 border-white",
|
||||||
|
"Lodge infinity pool blending into the bushveld horizon",
|
||||||
|
"256px",
|
||||||
|
"object-cover",
|
||||||
|
"text-sm uppercase tracking-[0.2em] text-[#ea580c] font-semibold mb-2",
|
||||||
|
"Our Story",
|
||||||
|
"text-3xl md:text-4xl font-bold text-[#21140d] mb-6",
|
||||||
|
"Bricolage Grotesque, sans-serif",
|
||||||
|
"Born from a love of Zululand",
|
||||||
|
"space-y-4 text-[#21140d]/80",
|
||||||
|
"Lora, serif",
|
||||||
|
"italic",
|
||||||
|
"Zulwini Lodge began in 2012 when the Mthembu family transformed their 500-hectare family farm into an exclusive bush retreat, determined to share the raw beauty of northern KwaZulu-Natal with the world. Every suite is named after a Zulu clan — Indlovu, Nkosi, Mvula — and furnished with hand-carved headboards and woven",
|
||||||
|
"ilala palm lampshades sourced from the nearby Hluhluwe community.",
|
||||||
|
"We work with three local women's cooperatives who supply the beadwork and pottery that adorn each room. Solar power heats all water, and 60% of our produce comes from our own permaculture garden — the rest from neighbouring farms within a 20 km radius. The result is a lodge that treads lightly and welcomes warmly, in the true spirit of ubuntu.",
|
||||||
|
"mt-8",
|
||||||
|
"outline",
|
||||||
|
"border-[#ea580c] text-[#ea580c] hover:bg-[#ea580c] hover:text-white transition-all duration-200 ease-out",
|
||||||
|
"Read the full story"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "RoomsSection",
|
||||||
|
"importPath": "@/components/sections/RoomsSection",
|
||||||
|
"position": 2,
|
||||||
|
"role": "unknown",
|
||||||
|
"hasImage": true,
|
||||||
|
"hasForm": false,
|
||||||
|
"itemCount": 12,
|
||||||
|
"layout": "grid",
|
||||||
|
"headings": [
|
||||||
|
"Suites designed for the bush"
|
||||||
|
],
|
||||||
|
"buttonLabels": [
|
||||||
|
"View & Book",
|
||||||
|
"See all suites →"
|
||||||
|
],
|
||||||
|
"people": [],
|
||||||
|
"allText": [
|
||||||
|
"use client",
|
||||||
|
"@/hooks/useMedusaProducts",
|
||||||
|
"next/image",
|
||||||
|
"next/link",
|
||||||
|
"@/components/ui/Card",
|
||||||
|
"@/components/ui/Button",
|
||||||
|
"@/components/ui/Badge",
|
||||||
|
"rooms",
|
||||||
|
"py-20 bg-[#f9f5f4]",
|
||||||
|
"container mx-auto px-4",
|
||||||
|
"text-center mb-12",
|
||||||
|
"text-sm uppercase tracking-[0.2em] text-[#ea580c] font-semibold mb-2",
|
||||||
|
"Six exclusive suites",
|
||||||
|
"text-3xl md:text-4xl font-bold text-[#21140d]",
|
||||||
|
"Bricolage Grotesque, sans-serif",
|
||||||
|
"Suites designed for the bush",
|
||||||
|
"mt-3 text-[#21140d]/70 max-w-2xl mx-auto",
|
||||||
|
"Lora, serif",
|
||||||
|
"italic",
|
||||||
|
"Each suite tells a story — Zulu beadwork, private decks, freestanding baths overlooking the acacia plain.",
|
||||||
|
"text-center py-12",
|
||||||
|
"inline-block w-8 h-8 border-2 border-[#ea580c] border-t-transparent rounded-full animate-spin",
|
||||||
|
"mt-4 text-[#21140d]/60",
|
||||||
|
"Loading suites...",
|
||||||
|
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",
|
||||||
|
"bg-white border border-[#e2d9d4] overflow-hidden hover:shadow-xl transition-shadow duration-300",
|
||||||
|
"relative h-56 overflow-hidden",
|
||||||
|
"Zulwini Lodge suite",
|
||||||
|
"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw",
|
||||||
|
"object-cover hover:scale-105 transition-transform duration-500 ease-out",
|
||||||
|
"pb-2 pt-4 px-5",
|
||||||
|
"flex items-center justify-between",
|
||||||
|
"text-xl font-bold text-[#21140d]",
|
||||||
|
"Bush Suite",
|
||||||
|
"default",
|
||||||
|
"bg-[#ea580c] text-white text-sm px-3 py-1",
|
||||||
|
"/ night",
|
||||||
|
"px-5 pb-5",
|
||||||
|
"text-[#21140d]/70 text-sm line-clamp-2 mb-4",
|
||||||
|
"Enjoy panoramic views, en-suite bathroom with outdoor shower, and a private deck.",
|
||||||
|
"outline",
|
||||||
|
"sm",
|
||||||
|
"w-full border-[#ea580c] text-[#ea580c] hover:bg-[#ea580c] hover:text-white transition-all duration-200 ease-out",
|
||||||
|
"View & Book",
|
||||||
|
"col-span-full text-center text-[#21140d]/60",
|
||||||
|
"No suites available at the moment. Please check back soon.",
|
||||||
|
"text-center mt-10",
|
||||||
|
"bg-[#ea580c] hover:bg-[#d04d0a] text-white px-8 py-3",
|
||||||
|
"See all suites →"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "SafariExperiencesSection",
|
||||||
|
"importPath": "@/components/sections/SafariExperiencesSection",
|
||||||
|
"position": 3,
|
||||||
|
"role": "unknown",
|
||||||
|
"hasImage": true,
|
||||||
|
"hasForm": false,
|
||||||
|
"itemCount": 4,
|
||||||
|
"layout": "grid",
|
||||||
|
"headings": [
|
||||||
|
"{exp.title}"
|
||||||
|
],
|
||||||
|
"buttonLabels": [],
|
||||||
|
"people": [],
|
||||||
|
"allText": [
|
||||||
|
"next/image",
|
||||||
|
"lucide-react",
|
||||||
|
"Guided Game Drives",
|
||||||
|
"Open-vehicle drives through Hluhluwe-iMfolozi Park with expert trackers—early mornings and golden sundowners included.",
|
||||||
|
"Walking Safaris",
|
||||||
|
"Follow the spoor of the Big Five on foot with armed rangers who read the bush like a storybook.",
|
||||||
|
"Sundowner Boma Dinners",
|
||||||
|
"Evenings under a KZN sky: fire-roasted meats, local wine, and the crackle of a mopane fire.",
|
||||||
|
"Zulu Cultural Immersion",
|
||||||
|
"Visit a neighbouring village for beading, dancing, and stories passed down through generations.",
|
||||||
|
"safariexperiences",
|
||||||
|
"safari-experiences",
|
||||||
|
"relative py-20 bg-[#f9f5f4] overflow-hidden",
|
||||||
|
"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",
|
||||||
|
"grid lg:grid-cols-2 gap-12 items-center",
|
||||||
|
"relative",
|
||||||
|
"relative overflow-hidden rounded-2xl shadow-2xl -rotate-2 z-10",
|
||||||
|
"Safari vehicle at sunset in KwaZulu Natal",
|
||||||
|
"object-cover w-full h-80 lg:h-96",
|
||||||
|
"absolute -top-4 -left-4 z-20 w-24 h-24 bg-[#ea580c] rounded-full flex items-center justify-center rotate-12 shadow-lg",
|
||||||
|
"text-white text-xs font-bold text-center leading-tight",
|
||||||
|
"Big Five",
|
||||||
|
"Territory",
|
||||||
|
"absolute -bottom-6 -right-6 w-56 h-36 overflow-hidden rounded-xl shadow-xl rotate-3 border-4 border-[#f9f5f4] z-20",
|
||||||
|
"Zulu cultural dancers",
|
||||||
|
"object-cover w-full h-full",
|
||||||
|
"text-sm uppercase tracking-widest text-[#2563eb] mb-2",
|
||||||
|
"Safari Experiences",
|
||||||
|
"text-4xl lg:text-5xl font-bold text-[#21140d] mb-6 leading-tight",
|
||||||
|
"The bush speaks —",
|
||||||
|
"italic font-normal text-2xl lg:text-3xl",
|
||||||
|
"we answer",
|
||||||
|
"space-y-6",
|
||||||
|
"flex gap-4",
|
||||||
|
"mt-1 flex-shrink-0 w-10 h-10 bg-[#ea580c]/10 rounded-full flex items-center justify-center",
|
||||||
|
"w-5 h-5 text-[#ea580c]",
|
||||||
|
"text-lg font-semibold text-[#21140d]",
|
||||||
|
"text-[#21140d]/70 italic text-sm"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "SpecialsSection",
|
||||||
|
"importPath": "@/components/sections/SpecialsSection",
|
||||||
|
"position": 4,
|
||||||
|
"role": "cms-promotions",
|
||||||
|
"hasImage": true,
|
||||||
|
"hasForm": false,
|
||||||
|
"itemCount": -1,
|
||||||
|
"layout": "grid",
|
||||||
|
"headings": [
|
||||||
|
"Specials worth the trip",
|
||||||
|
"{d.title}"
|
||||||
|
],
|
||||||
|
"buttonLabels": [
|
||||||
|
"Book Now"
|
||||||
|
],
|
||||||
|
"people": [],
|
||||||
|
"allText": [
|
||||||
|
"use client",
|
||||||
|
"@/hooks/useEmDashContent",
|
||||||
|
"next/image",
|
||||||
|
"next/link",
|
||||||
|
"@/components/ui/Card",
|
||||||
|
"@/components/ui/Badge",
|
||||||
|
"@/components/ui/Button",
|
||||||
|
"promotions",
|
||||||
|
"flex justify-center py-16",
|
||||||
|
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
|
||||||
|
"specials",
|
||||||
|
"py-20 bg-white",
|
||||||
|
"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",
|
||||||
|
"text-center mb-12",
|
||||||
|
"text-sm uppercase tracking-widest text-[#2563eb] mb-2",
|
||||||
|
"Limited Offers",
|
||||||
|
"text-4xl font-bold text-[#21140d] mb-4",
|
||||||
|
"Specials worth the trip",
|
||||||
|
"text-[#21140d]/70 italic max-w-2xl mx-auto",
|
||||||
|
"Exclusive packages and seasonal deals crafted for unforgettable stays.",
|
||||||
|
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",
|
||||||
|
"overflow-hidden rounded-2xl shadow-2xl border-0 group",
|
||||||
|
"relative aspect-video overflow-hidden",
|
||||||
|
"Promotion",
|
||||||
|
"(max-width: 768px) 100vw, 33vw",
|
||||||
|
"object-cover transition-transform duration-500 ease-out group-hover:scale-105",
|
||||||
|
"default",
|
||||||
|
"absolute top-3 right-3 text-sm font-bold shadow-lg",
|
||||||
|
"From",
|
||||||
|
"p-6",
|
||||||
|
"text-xl font-bold text-[#21140d] mb-2",
|
||||||
|
"text-[#21140d]/70 text-sm italic mb-4",
|
||||||
|
"w-full",
|
||||||
|
"Book Now"
|
||||||
|
],
|
||||||
|
"cmsCollection": "promotions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GallerySection",
|
||||||
|
"importPath": "@/components/sections/GallerySection",
|
||||||
|
"position": 5,
|
||||||
|
"role": "gallery",
|
||||||
|
"hasImage": true,
|
||||||
|
"hasForm": false,
|
||||||
|
"itemCount": -1,
|
||||||
|
"layout": "grid",
|
||||||
|
"headings": [
|
||||||
|
"Glimpses of Zulwini",
|
||||||
|
"{d.title}"
|
||||||
|
],
|
||||||
|
"buttonLabels": [],
|
||||||
|
"people": [],
|
||||||
|
"allText": [
|
||||||
|
"use client",
|
||||||
|
"@/hooks/useEmDashContent",
|
||||||
|
"next/image",
|
||||||
|
"gallery",
|
||||||
|
"flex justify-center py-16",
|
||||||
|
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
|
||||||
|
"py-20 bg-[#f9f5f4]",
|
||||||
|
"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",
|
||||||
|
"text-center mb-12",
|
||||||
|
"text-sm uppercase tracking-widest text-[#2563eb] mb-2",
|
||||||
|
"Visual Stories",
|
||||||
|
"text-4xl font-bold text-[#21140d] mb-4",
|
||||||
|
"Glimpses of Zulwini",
|
||||||
|
"text-[#21140d]/70 italic max-w-2xl mx-auto",
|
||||||
|
"From sunrise game drives to star-lit bomas — every frame tells a story.",
|
||||||
|
"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6",
|
||||||
|
"group relative overflow-hidden rounded-2xl shadow-xl aspect-video cursor-pointer",
|
||||||
|
"Gallery image",
|
||||||
|
"(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw",
|
||||||
|
"object-cover transition-transform duration-500 ease-out group-hover:scale-105",
|
||||||
|
"absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300",
|
||||||
|
"absolute bottom-4 left-4 text-white",
|
||||||
|
"text-lg font-bold",
|
||||||
|
"text-sm italic opacity-90"
|
||||||
|
],
|
||||||
|
"cmsCollection": "gallery"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BookingCTASection",
|
||||||
|
"importPath": "@/components/sections/BookingCTASection",
|
||||||
|
"position": 6,
|
||||||
|
"role": "booking",
|
||||||
|
"hasImage": false,
|
||||||
|
"hasForm": false,
|
||||||
|
"itemCount": 1,
|
||||||
|
"layout": "single",
|
||||||
|
"headings": [
|
||||||
|
"Reserve Your Slice of the Wild"
|
||||||
|
],
|
||||||
|
"buttonLabels": [
|
||||||
|
"Check Availability"
|
||||||
|
],
|
||||||
|
"people": [],
|
||||||
|
"allText": [
|
||||||
|
"use client",
|
||||||
|
"next/link",
|
||||||
|
"@/components/ui/Button",
|
||||||
|
"bookingcta",
|
||||||
|
"book-now",
|
||||||
|
"bg-[#ea580c] py-16 md:py-24",
|
||||||
|
"container mx-auto px-4 text-center",
|
||||||
|
"text-3xl md:text-4xl font-bold text-white mb-4",
|
||||||
|
"Reserve Your Slice of the Wild",
|
||||||
|
"text-lg md:text-xl text-white/90 mb-8 max-w-2xl mx-auto",
|
||||||
|
"Book your luxury bush stay at Zulwini Lodge – a few clicks and you are set for an unforgettable escape into KwaZulu-Natal.",
|
||||||
|
"outline",
|
||||||
|
"border-white text-white hover:bg-white hover:text-[#ea580c] text-lg px-8 py-3",
|
||||||
|
"Check Availability"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ContactSection",
|
||||||
|
"importPath": "@/components/sections/ContactSection",
|
||||||
|
"position": 7,
|
||||||
|
"role": "contact",
|
||||||
|
"hasImage": true,
|
||||||
|
"hasForm": true,
|
||||||
|
"itemCount": 4,
|
||||||
|
"layout": "grid",
|
||||||
|
"headings": [
|
||||||
|
"Get in Touch",
|
||||||
|
"Zulwini Lodge location"
|
||||||
|
],
|
||||||
|
"buttonLabels": [
|
||||||
|
"Send Message"
|
||||||
|
],
|
||||||
|
"people": [],
|
||||||
|
"allText": [
|
||||||
|
"use client",
|
||||||
|
"react",
|
||||||
|
"next/link",
|
||||||
|
"@/components/ui/Button",
|
||||||
|
"@/components/ui/Input",
|
||||||
|
"@/components/ui/Card",
|
||||||
|
"lucide-react",
|
||||||
|
"Thank you! Your enquiry has been sent to our reservations team.",
|
||||||
|
"Phone",
|
||||||
|
"+27 35 562 0123",
|
||||||
|
"tel:+27355620123",
|
||||||
|
"WhatsApp",
|
||||||
|
"Email",
|
||||||
|
"reservations@zulwinilodge.co.za",
|
||||||
|
"mailto:reservations@zulwinilodge.co.za",
|
||||||
|
"Address",
|
||||||
|
"R22, Hluhluwe, KwaZulu-Natal, 3960",
|
||||||
|
"contact",
|
||||||
|
"py-16 md:py-24 bg-[#f9f5f4]",
|
||||||
|
"container mx-auto px-4",
|
||||||
|
"text-3xl md:text-4xl font-bold text-[#21140d] text-center mb-12",
|
||||||
|
"Get in Touch",
|
||||||
|
"grid md:grid-cols-2 gap-8",
|
||||||
|
"mb-6 border-[#e2d9d4]",
|
||||||
|
"space-y-4 p-6",
|
||||||
|
"flex items-start gap-3",
|
||||||
|
"w-5 h-5 mt-1 text-[#ea580c] flex-shrink-0",
|
||||||
|
"font-semibold text-[#21140d]",
|
||||||
|
"text-[#ea580c] hover:underline",
|
||||||
|
"text-gray-600",
|
||||||
|
"rounded-2xl overflow-hidden shadow-md border border-[#e2d9d4]",
|
||||||
|
"100%",
|
||||||
|
"250",
|
||||||
|
"lazy",
|
||||||
|
"no-referrer-when-downgrade",
|
||||||
|
"Zulwini Lodge location",
|
||||||
|
"border-[#e2d9d4]",
|
||||||
|
"text-[#21140d]",
|
||||||
|
"Send us an Enquiry",
|
||||||
|
"space-y-4",
|
||||||
|
"Your name",
|
||||||
|
"email",
|
||||||
|
"Your email",
|
||||||
|
"tel",
|
||||||
|
"Phone number",
|
||||||
|
"w-full rounded-xl border border-[#e2d9d4] bg-background p-3 focus:outline-none focus:ring-2 focus:ring-[#ea580c]",
|
||||||
|
"Your message...",
|
||||||
|
"submit",
|
||||||
|
"default",
|
||||||
|
"w-full bg-[#ea580c] text-white"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"navigationLinks": [
|
||||||
|
"Zulwini Lodge",
|
||||||
|
"Home",
|
||||||
|
"Rooms",
|
||||||
|
"Our Story",
|
||||||
|
"Safari Experiences",
|
||||||
|
"Gallery",
|
||||||
|
"Contact",
|
||||||
|
"Book a Room"
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user