From 21944df4158fe5396f1d451106b0975516da4af0 Mon Sep 17 00:00:00 2001 From: Vula Builder Date: Tue, 14 Jul 2026 18:35:14 +0000 Subject: [PATCH] Deploy --- vula-index.json | 548 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 548 insertions(+) create mode 100644 vula-index.json diff --git a/vula-index.json b/vula-index.json new file mode 100644 index 0000000..518a6fc --- /dev/null +++ b/vula-index.json @@ -0,0 +1,548 @@ +{ + "projectName": "Molten Rock Private Reserve", + "businessType": "salon", + "industry": "salon", + "tone": "", + "tier": 2, + "serviceType": "services", + "generatedAt": "2026-07-13T09:41:31.132Z", + "sections": [ + { + "name": "MoltenRockHeroSection", + "importPath": "@/components/sections/MoltenRockHeroSection", + "position": 0, + "role": "hero", + "hasImage": true, + "hasForm": false, + "itemCount": 5, + "layout": "flex-row", + "headings": [], + "buttonLabels": [ + "Explore Experiences" + ], + "people": [], + "allText": [ + "use client", + "next/image", + "@/components/ui/Button", + "moltenrockhero", + "hero", + "relative min-h-screen flex items-center overflow-hidden bg-[#17170f]", + "absolute inset-0", + "Dawn over volcanic rock formations and untouched bush", + "100vw", + "object-cover opacity-70", + "absolute inset-0 bg-gradient-to-t from-[#17170f]/90 via-[#17170f]/50 to-transparent", + "relative container mx-auto px-6 text-center py-32", + "inline-flex items-center gap-4 mb-8", + "block w-14 h-px bg-[#6b8e23]", + "font-sans uppercase tracking-[0.2em] text-[#6b8e23] text-sm", + "Molten Rock Private Reserve", + "font-serif font-light text-5xl md:text-7xl text-[#f5f5dc] leading-tight", + "Where the Earth Breathes", + "italic text-[#6b8e23]", + "Fire", + "and Silence", + "mt-6 max-w-2xl mx-auto text-lg md:text-xl text-[#eeeee7]/80 font-light", + "An intimate, exclusive retreat in the Greater Kruger — 6 volcanic suites, private game drives, and a primal connection to the wild.", + "mt-10 flex gap-4 justify-center", + "default", + "lg", + "Explore Experiences" + ] + }, + { + "name": "BespokeSafariExperiencesSection", + "importPath": "@/components/sections/BespokeSafariExperiencesSection", + "position": 1, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": 13, + "layout": "grid", + "headings": [], + "buttonLabels": [ + "Book Now", + "View All Experiences" + ], + "people": [], + "allText": [ + "use client", + "@/hooks/useMedusaProducts", + "next/image", + "@/components/ui/Card", + "@/components/ui/Button", + "lucide-react", + "bespokesafariexperiences", + "safari-experiences", + "py-24 bg-[#17170f]", + "max-w-7xl mx-auto px-6 text-center", + "text-[#eeeee7]/60", + "Loading experiences…", + "No experiences available at the moment.", + "max-w-7xl mx-auto px-6", + "text-center mb-16", + "inline-flex items-center gap-4 mb-6", + "block w-14 h-px bg-[#6b8e23]", + "font-sans uppercase tracking-[0.2em] text-[#6b8e23] text-sm", + "Bespoke Safari Experiences", + "font-serif font-light text-4xl md:text-5xl text-[#f5f5dc] leading-tight", + "Tailored to", + "italic text-[#6b8e23]", + "you", + "and the wild", + "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6", + "bg-[#1a1a11] border-[#404030] hover:border-[#6b8e23]/50 transition-all duration-200", + "relative h-48 overflow-hidden", + "Safari experience", + "(max-width: 768px) 100vw, 25vw", + "object-cover", + "text-[#f5f5dc] font-serif text-lg", + "text-[#eeeee7]/70 text-sm leading-relaxed line-clamp-2", + "mt-3 font-sans text-[#6b8e23] tracking-wider", + "From R", + "default", + "sm", + "w-full", + "Book Now", + "text-center mt-12", + "secondary", + "lg", + "View All Experiences" + ] + }, + { + "name": "SixSanctuarySuitesSection", + "importPath": "@/components/sections/SixSanctuarySuitesSection", + "position": 2, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": 6, + "layout": "grid", + "headings": [], + "buttonLabels": [], + "people": [ + "Magma Suite", + "Obsidian Suite", + "Cinder Suite", + "Basalt Suite", + "Pumice Suite", + "Tephra Suite" + ], + "allText": [ + "next/image", + "@/components/ui/Card", + "Magma Suite", + "Private plunge pool bathed in volcanic warmth, outdoor shower under an endless sky.", + "Obsidian Suite", + "Deep charcoal stone interiors, floor-to-ceiling glass, and a fire pit overlooking the bushveld.", + "Cinder Suite", + "Intimate loft with suspended hammock, private terrace, and sunrise-facing outdoor shower.", + "Basalt Suite", + "Two-bedroom sanctuary with a shared infinity pool and an open-plan lounge under thatch.", + "Pumice Suite", + "Minimalist design with natural textures, a secluded boma for stargazing, and a private butler.", + "Tephra Suite", + "Perched on a ridge with panoramic views, outdoor bath carved from a single rock.", + "sixsanctuarysuites", + "luxury-suites", + "py-24 bg-[#0d0d08]", + "max-w-7xl mx-auto px-6", + "text-center mb-16", + "inline-flex items-center gap-4 mb-6", + "block w-14 h-px bg-[#6b8e23]", + "font-sans uppercase tracking-[0.2em] text-[#6b8e23] text-sm", + "Six Sanctuary Suites", + "font-serif font-light text-4xl md:text-5xl text-[#f5f5dc] leading-tight", + "Named after", + "italic text-[#6b8e23]", + "volcanic", + "elements", + "mt-4 max-w-2xl mx-auto text-[#eeeee7]/70", + "Each suite is a private sanctuary with plunge pool, outdoor shower, and panoramic bush views — designed for intimacy and exclusivity.", + "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", + "bg-[#1a1a11] border-[#404030] hover:border-[#6b8e23]/50 transition-all duration-200", + "relative h-56 overflow-hidden", + "(max-width: 768px) 100vw, 33vw", + "object-cover", + "text-[#f5f5dc] font-serif text-xl", + "text-[#eeeee7]/70 text-sm leading-relaxed", + "text-center mt-12", + "font-sans uppercase tracking-wider text-[#6b8e23] text-sm", + "Starting from R12 500 per night" + ] + }, + { + "name": "MoltenRockOriginsSection", + "importPath": "@/components/sections/MoltenRockOriginsSection", + "position": 3, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": 7, + "layout": "grid", + "headings": [], + "buttonLabels": [], + "people": [], + "allText": [ + "next/image", + "@/components/ui/Button", + "moltenrockorigins", + "our-story", + "py-24 bg-[#17170f]", + "max-w-7xl mx-auto px-6", + "grid md:grid-cols-2 gap-12 items-center", + "relative h-96 md:h-[500px] overflow-hidden rounded-md border border-[#404030]", + "Ancient volcanic landscape of the Greater Kruger", + "(max-width: 768px) 100vw, 50vw", + "object-cover", + "absolute inset-0 bg-gradient-to-r from-[#17170f]/30 to-transparent", + "inline-flex items-center gap-4 mb-6", + "block w-14 h-px bg-[#6b8e23]", + "font-sans uppercase tracking-[0.2em] text-[#6b8e23] text-sm", + "Origins", + "font-serif font-light text-4xl md:text-5xl text-[#f5f5dc] leading-tight mb-6", + "Born from", + "italic text-[#6b8e23]", + "fire", + ", rooted in conservation", + "text-[#eeeee7]/80 leading-relaxed mb-6", + "Molten Rock Private Reserve was carved from an ancient volcanic ridge by the Moloi family — a legacy of custodianship passed down through three generations. Where molten lava once scarred the earth, nutrient-rich soils now sustain an astonishing density of wildlife: lion, leopard, elephant, and over 340 bird species.", + "text-[#eeeee7]/70 leading-relaxed mb-8", + "We chose to build only six suites — not for scarcity, but for intimacy. Every game drive is private, every meal is a conversation with the bush, every guest leaves knowing they belong to this land. Our foundation is conservation-led hospitality: 15% of every booking directly funds anti-poaching patrols and community education in neighbouring villages.", + "flex flex-wrap gap-6 text-sm font-sans uppercase tracking-wider", + "text-[#6b8e23]", + "24,000 acres", + "text-[#eeeee7]/40", + "6 exclusive suites", + "3rd generation stewards" + ] + }, + { + "name": "ExclusiveRetreatOffersSection", + "importPath": "@/components/sections/ExclusiveRetreatOffersSection", + "position": 4, + "role": "cms-offers", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "Lasting Impressions, Timely Invitations", + "{d.title}" + ], + "buttonLabels": [ + "Reserve Now" + ], + "people": [], + "allText": [ + "use client", + "@/hooks/useEmDashContent", + "next/image", + "@/components/ui/Button", + "offers", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin text-[#f5f5dc]", + "exclusive-offers", + "exclusiveretreatoffers", + "py-24 bg-[#17170f]", + "max-w-7xl mx-auto px-6", + "flex items-center justify-center gap-4 mb-4", + "w-14 h-px bg-[#f5f5dc]", + "text-[#6b8e23] font-sans uppercase tracking-[0.15em] text-sm", + "Curated Escapes", + "text-4xl md:text-5xl font-light text-[#eeeee7] text-center mb-4 font-serif", + "Lasting Impressions, Timely Invitations", + "text-[#eeeee7]/80 text-center max-w-2xl mx-auto mb-12 font-sans text-sm leading-relaxed", + "Hand‑picked packages for those who seek the extraordinary.", + "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", + "group rounded-[8px] border border-white/10 bg-[#17170f] overflow-hidden hover:border-[#f5f5dc]/30 transition-all duration-200", + "relative aspect-video overflow-hidden", + "Retreat offer", + "(max-width: 768px) 100vw, 33vw", + "object-cover transition-transform duration-500 ease-out group-hover:scale-105", + "p-5", + "text-xl font-serif font-light text-[#eeeee7] mb-2", + "text-sm text-[#eeeee7]/70 mb-3 font-sans leading-relaxed", + "flex items-center justify-between text-sm", + "text-[#f5f5dc] font-semibold font-sans", + "text-[#6b8e23] font-sans uppercase tracking-wider text-xs", + "text-xs text-[#eeeee7]/50 mt-2 font-sans", + "Valid until", + "default", + "sm", + "mt-4 w-full", + "Reserve Now" + ], + "cmsCollection": "offers" + }, + { + "name": "MoltenMomentsGallerySection", + "importPath": "@/components/sections/MoltenMomentsGallerySection", + "position": 5, + "role": "gallery", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "A Gallery of Light and Shadow", + "{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 text-[#f5f5dc]", + "photo-gallery", + "moltenmomentsgallery", + "py-24 bg-[#1a1a12]", + "max-w-7xl mx-auto px-6", + "flex items-center justify-center gap-4 mb-4", + "w-14 h-px bg-[#f5f5dc]", + "text-[#6b8e23] font-sans uppercase tracking-[0.15em] text-sm", + "Moments Captured", + "text-4xl md:text-5xl font-light text-[#eeeee7] text-center mb-4 font-serif", + "A Gallery of Light and Shadow", + "text-[#eeeee7]/80 text-center max-w-2xl mx-auto mb-12 font-sans text-sm leading-relaxed", + "Golden-hour game drives, candlelit dinners, and the silent luxury of the suites.", + "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4", + "group relative aspect-square overflow-hidden rounded-[6px] border border-white/10", + "Molten Rock moment", + "(max-width: 768px) 50vw, 25vw", + "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-200", + "absolute bottom-0 left-0 right-0 p-3 opacity-0 group-hover:opacity-100 transition-opacity duration-200", + "text-sm font-serif text-[#eeeee7] leading-tight" + ], + "cmsCollection": "gallery" + }, + { + "name": "GuestReverieTestimonialsSection", + "importPath": "@/components/sections/GuestReverieTestimonialsSection", + "position": 6, + "role": "testimonials", + "hasImage": false, + "hasForm": false, + "itemCount": 3, + "layout": "grid", + "headings": [ + "Whispers from the Wild" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "Eleanor Vance", + "Guest from London", + "Waking to the roar of a lion across the river — I have never felt so alive.", + "Mateo Silva", + "Travel writer, São Paulo", + "The ranger knew every bird by its call. That kind of intimacy with the bush is rare.", + "Yuki Tanaka", + "Bespoke travel curator, Tokyo", + "Six suites, infinite privacy. Every detail whispers care.", + "guest-testimonials", + "guesttestimonials", + "py-20 bg-[#17170f] border-t border-white/10", + "max-w-5xl mx-auto px-6 text-center", + "flex items-center justify-center gap-4 mb-4", + "w-14 h-px bg-[#f5f5dc]", + "text-[#6b8e23] font-sans uppercase tracking-[0.15em] text-sm", + "Guest Reverie", + "text-3xl md:text-4xl font-light text-[#eeeee7] font-serif mb-12", + "Whispers from the Wild", + "grid grid-cols-1 md:grid-cols-3 gap-8", + "border border-white/10 rounded-[8px] p-6 bg-[#17170f] text-left", + "text-[#eeeee7]/85 font-sans text-sm leading-relaxed mb-4", + "“", + "”", + "text-[#eeeee7] font-serif text-base", + "text-[#6b8e23] font-sans uppercase tracking-wider text-xs mt-1" + ] + }, + { + "name": "FieldNotesJournalSection", + "importPath": "@/components/sections/FieldNotesJournalSection", + "position": 7, + "role": "blog", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "Notes from the Bush", + "{d.title}" + ], + "buttonLabels": [ + "Read More", + "Read the Journal" + ], + "people": [], + "allText": [ + "use client", + "@/hooks/useEmDashContent", + "next/image", + "@/components/ui/Button", + "posts", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin text-[#f5f5dc]", + "field-notes", + "fieldnotesjournal", + "py-24 bg-[#17170f]", + "max-w-7xl mx-auto px-6", + "flex items-center justify-center gap-4 mb-4", + "w-14 h-px bg-[#f5f5dc]", + "text-[#6b8e23] font-sans uppercase tracking-[0.15em] text-sm", + "Field Journal", + "text-4xl md:text-5xl font-light text-[#eeeee7] text-center mb-4 font-serif", + "Notes from the Bush", + "text-[#eeeee7]/80 text-center max-w-2xl mx-auto mb-12 font-sans text-sm leading-relaxed", + "Rangers’ diaries, conservation updates, and the quiet stories of the reserve.", + "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", + "group rounded-[8px] border border-white/10 overflow-hidden hover:border-[#f5f5dc]/30 transition-all duration-200", + "relative aspect-video overflow-hidden", + "Journal post", + "(max-width: 768px) 100vw, 33vw", + "object-cover transition-transform duration-500 ease-out group-hover:scale-105", + "p-5", + "flex items-center gap-2 mb-2", + "text-[#6b8e23] font-sans uppercase tracking-wider text-xs", + "text-lg font-serif font-light text-[#eeeee7] mb-2", + "text-sm text-[#eeeee7]/70 mb-3 font-sans leading-relaxed line-clamp-3", + "text-xs text-[#eeeee7]/50 font-sans", + "By", + "outline", + "sm", + "mt-4", + "Read More", + "mt-12 text-center", + "default", + "md", + "inline-flex items-center", + "Read the Journal" + ], + "cmsCollection": "posts" + }, + { + "name": "DirectBookingCTASection", + "importPath": "@/components/sections/DirectBookingCTASection", + "position": 8, + "role": "booking", + "hasImage": false, + "hasForm": false, + "itemCount": 4, + "layout": "flex-row", + "headings": [], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/link", + "KSh", + "directbookingcta", + "direct-booking-cta", + "relative py-24 lg:py-28 bg-[#17170f] overflow-hidden", + "absolute inset-0 opacity-30", + "relative container mx-auto px-4 text-center", + "flex items-center justify-center gap-4 mb-6", + "h-px w-14 bg-[#6b8e23]", + "text-[#6b8e23] text-sm uppercase tracking-[0.2em]", + "var(--font-jost, Jost, sans-serif)", + "Book Direct", + "text-5xl lg:text-6xl text-[#eeeee7] font-light leading-tight mb-4", + "var(--font-cormorant, \"Cormorant Garamond\", serif)", + "Reserve Your", + "italic text-[#6b8e23]", + "Sanctuary", + "text-[#eeeee7]/70 max-w-2xl mx-auto mb-8 text-sm uppercase tracking-widest", + "The best rates and most personal touches await when you book direct.", + "mb-4", + "inline-block bg-[#6b8e23] hover:bg-[#5a7a1c] text-[#eeeee7] px-10 py-4 text-lg uppercase tracking-widest transition-all duration-200 ease-out", + "Reserve Your Sanctuary", + "text-[#eeeee7]/50 text-xs uppercase tracking-wider", + "Only 2 suites remaining for February — secure your stay" + ] + }, + { + "name": "PrivateReserveContactSection", + "importPath": "@/components/sections/PrivateReserveContactSection", + "position": 9, + "role": "contact", + "hasImage": true, + "hasForm": true, + "itemCount": 16, + "layout": "grid", + "headings": [], + "buttonLabels": [ + "Send Enquiry" + ], + "people": [], + "allText": [ + "use client", + "react", + "next/image", + "@/components/ui/Button", + "@/components/ui/Input", + "lucide-react", + "KSh", + "Suites", + "privatereservecontact", + "contact", + "py-24 lg:py-28 bg-[#1a1a12] border-t border-[#404030]", + "container mx-auto px-4", + "flex items-center justify-center gap-4 mb-8", + "h-px w-14 bg-[#6b8e23]", + "text-[#6b8e23] text-sm uppercase tracking-[0.2em]", + "var(--font-jost, Jost, sans-serif)", + "Your Journey Awaits", + "text-4xl lg:text-5xl text-[#eeeee7] font-light text-center mb-12", + "var(--font-cormorant, \"Cormorant Garamond\", serif)", + "Reach the", + "italic text-[#6b8e23]", + "Wild", + "Seamlessly", + "grid grid-cols-1 lg:grid-cols-2 gap-12", + "space-y-6", + "relative h-72 rounded-sm overflow-hidden border border-[#404030]", + "Greater Kruger landscape – private reserve location", + "(max-width: 1024px) 100vw, 50vw", + "object-cover", + "absolute inset-0 bg-gradient-to-t from-[#17170f]/60 to-transparent", + "absolute bottom-4 left-4 right-4 text-[#eeeee7]", + "text-xs uppercase tracking-wider", + "33 km north-east of Hoedspruit", + "text-lg font-light", + "Molten Rock Private Reserve", + "bg-[#17170f] p-6 rounded-sm border border-[#404030]", + "text-[#f5f5dc] text-xs uppercase tracking-wider mb-4", + "inline w-4 h-4 mr-2 text-[#6b8e23]", + "Private Arrival", + "space-y-2 text-sm text-[#eeeee7]/80", + "text-[#6b8e23]", + "Charter from Johannesburg (1.5 hr flight)", + "Direct helicopter transfer from Kruger Mpumalanga", + "Luxury vehicle collection from Hoedspruit Eastgate", + "mt-4 space-y-1 text-[#eeeee7]/60 text-xs", + "inline w-3 h-3 mr-1", + "+27 83 456 7890", + "concierge@moltenrock.com", + "bg-[#17170f] p-8 rounded-sm border border-[#404030]", + "flex flex-col items-center justify-center h-full text-center" + ] + } + ], + "navigationLinks": [ + "Home", + "Six Sanctuary Suites", + "Molten Rock Origins", + "Molten Moments Gallery", + "Private Reserve Contact", + "Services" + ] +} \ No newline at end of file