751 lines
27 KiB
JSON
751 lines
27 KiB
JSON
{
|
||
"projectName": "Ndlovu Naturals",
|
||
"businessType": "",
|
||
"industry": "",
|
||
"tone": "",
|
||
"tier": 3,
|
||
"generatedAt": "2026-07-28T07:29:14.471Z",
|
||
"sections": [
|
||
{
|
||
"name": "NdlovuHeritageHeroSection",
|
||
"importPath": "@/components/sections/NdlovuHeritageHeroSection",
|
||
"position": 0,
|
||
"role": "hero",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": -1,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"{d.title}"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"@/hooks/useVulaContent",
|
||
"next/image",
|
||
"@/components/ui/Button",
|
||
"next/link",
|
||
"hero_banners",
|
||
"flex justify-center py-16",
|
||
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
|
||
"ndlovu-heritage-hero",
|
||
"ndlovuheritagehero",
|
||
"relative min-h-[80vh] flex items-center overflow-hidden bg-[#f9f5f4]",
|
||
"container mx-auto px-4 grid lg:grid-cols-2 gap-12 items-center",
|
||
"relative z-10 space-y-6",
|
||
"text-5xl lg:text-7xl font-bold text-[#21140d] leading-tight",
|
||
"text-xl text-[#8b5a3c] font-serif italic max-w-xl",
|
||
"default",
|
||
"lg",
|
||
"bg-[#8b5a3c] hover:bg-[#6a442e] text-white",
|
||
"relative h-[60vh] lg:h-[80vh] rounded-2xl overflow-hidden shadow-2xl",
|
||
"(max-width: 768px) 100vw, 50vw",
|
||
"object-cover"
|
||
],
|
||
"cmsCollection": "hero_banners"
|
||
},
|
||
{
|
||
"name": "IndigenousBotanicalsStorySection",
|
||
"importPath": "@/components/sections/IndigenousBotanicalsStorySection",
|
||
"position": 1,
|
||
"role": "about",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": 16,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Rooted in Indigenous Wisdom",
|
||
"Marula – Resilience Oil",
|
||
"Rooibos – Antioxidant Shield",
|
||
"Buchu – Purifying Essence"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"next/image",
|
||
"indigenousbotanicalsstory",
|
||
"indigenous-botanicals",
|
||
"py-24 bg-[#fff] relative overflow-hidden",
|
||
"container mx-auto px-4",
|
||
"grid lg:grid-cols-2 gap-12 items-center",
|
||
"relative",
|
||
"relative h-[500px] lg:h-[600px] rounded-2xl overflow-hidden shadow-xl",
|
||
"Marula fruit being harvested",
|
||
"(max-width: 1024px) 100vw, 50vw",
|
||
"object-cover",
|
||
"absolute -bottom-6 -right-6 bg-[#ea580c] text-white px-6 py-3 rounded-full rotate-3 shadow-lg",
|
||
"font-bold text-sm",
|
||
"Cold-pressed daily",
|
||
"space-y-8",
|
||
"text-4xl lg:text-5xl font-bold text-[#21140d] leading-tight",
|
||
"Rooted in Indigenous Wisdom",
|
||
"text-lg text-[#8b5a3c] font-serif italic",
|
||
"Three generations of African skincare knowledge meet modern cold-press technique.",
|
||
"space-y-6",
|
||
"flex gap-4",
|
||
"w-16 h-16 rounded-full bg-[#16a34a]/20 flex items-center justify-center flex-shrink-0",
|
||
"text-2xl",
|
||
"🌿",
|
||
"font-bold text-[#21140d]",
|
||
"Marula – Resilience Oil",
|
||
"text-[#21140d]/80",
|
||
"Cold-pressed from wild-harvested kernels in Limpopo, marula oil delivers deep hydration and protects against harsh UV.",
|
||
"w-16 h-16 rounded-full bg-[#ea580c]/20 flex items-center justify-center flex-shrink-0",
|
||
"🍵",
|
||
"Rooibos – Antioxidant Shield",
|
||
"Fermented in the Cederberg mountains, rooibos soothes inflammation and brightens skin tone naturally.",
|
||
"w-16 h-16 rounded-full bg-[#8b5a3c]/20 flex items-center justify-center flex-shrink-0",
|
||
"🌸",
|
||
"Buchu – Purifying Essence",
|
||
"Grown in the fynbos of the Western Cape, buchu leaf oil unclogs pores and restores balance to combination skin."
|
||
]
|
||
},
|
||
{
|
||
"name": "BotanicalTreasuresSection",
|
||
"importPath": "@/components/sections/BotanicalTreasuresSection",
|
||
"position": 2,
|
||
"role": "unknown",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": 10,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Botanical Treasures",
|
||
"{product.title}"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"@/hooks/useMedusaProducts",
|
||
"@/hooks/useMedusaCart",
|
||
"@/components/ui/Card",
|
||
"@/components/ui/Button",
|
||
"@/components/ui/Badge",
|
||
"next/image",
|
||
"next/link",
|
||
"flex justify-center py-16",
|
||
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
|
||
"cart-drawer-open",
|
||
"botanicaltreasures",
|
||
"botanical-treasures",
|
||
"py-20 bg-[#f9f5f4]",
|
||
"container mx-auto px-4",
|
||
"text-center mb-14",
|
||
"text-4xl font-bold text-[#21140d]",
|
||
"Botanical Treasures",
|
||
"text-lg text-[#8b5a3c] font-serif italic mt-3 max-w-xl mx-auto",
|
||
"Eight small-batch essentials cold-pressed with ancestral care",
|
||
"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6",
|
||
"group cursor-pointer overflow-hidden rounded-xl border-0 shadow-md hover:shadow-xl transition-all duration-200",
|
||
"relative aspect-square overflow-hidden bg-[#e2dad4]",
|
||
"(max-width: 768px) 100vw, 25vw",
|
||
"object-cover group-hover:scale-105 transition-transform duration-500",
|
||
"flex items-center justify-center h-full text-[#8b5a3c]",
|
||
"w-12 h-12",
|
||
"none",
|
||
"currentColor",
|
||
"0 0 24 24",
|
||
"round",
|
||
"M15.75 10.5V6a3.75 3.75 0 10-7.5 0v4.5m11.356-1.993l1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 01-1.12-1.243l1.264-12A1.125 1.125 0 015.513 7.5h12.974c.576 0 1.059.435 1.119 1.007zM8.625 10.5a.375.375 0 11-.75 0 .375.375 0 01.75 0zm7.5 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z",
|
||
"best-seller",
|
||
"accent",
|
||
"absolute top-3 left-3 bg-[#ea580c] text-white",
|
||
"Best Seller",
|
||
"p-4",
|
||
"font-semibold text-[#21140d] truncate",
|
||
"text-[#ea580c] font-bold mt-1",
|
||
"px-4 pb-4 pt-0",
|
||
"default",
|
||
"sm",
|
||
"w-full bg-[#8b5a3c] hover:bg-[#6a442e] text-white",
|
||
"Quick Add"
|
||
]
|
||
},
|
||
{
|
||
"name": "FeaturedProductsSection",
|
||
"importPath": "@/components/sections/FeaturedProductsSection",
|
||
"position": 3,
|
||
"role": "services",
|
||
"hasImage": false,
|
||
"hasForm": false,
|
||
"itemCount": 11,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Featured Products"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"@/hooks/useFeaturedProducts",
|
||
"next/link",
|
||
"lucide-react",
|
||
"@/hooks/useMedusaCart",
|
||
"KSh",
|
||
"py-20",
|
||
"container mx-auto px-4",
|
||
"grid grid-cols-2 md:grid-cols-4 gap-6",
|
||
"aspect-square rounded-xl bg-muted animate-pulse",
|
||
"featuredproducts",
|
||
"flex items-center justify-between mb-10",
|
||
"text-xs uppercase tracking-widest text-primary font-semibold mb-1",
|
||
"Curated for You",
|
||
"text-3xl font-bold text-foreground",
|
||
"Featured Products",
|
||
"text-sm font-semibold text-primary hover:underline underline-offset-4",
|
||
"View all →",
|
||
"group bg-card rounded-xl overflow-hidden border border-border hover:shadow-md transition-all",
|
||
"block",
|
||
"relative aspect-square bg-muted",
|
||
"w-full h-full object-cover group-hover:scale-105 transition-transform duration-500",
|
||
"w-full h-full flex items-center justify-center",
|
||
"h-8 w-8 text-muted-foreground/30",
|
||
"p-4",
|
||
"text-sm font-semibold text-foreground line-clamp-2 mb-1 hover:text-primary transition-colors",
|
||
"text-sm font-bold text-primary mb-3",
|
||
"cart-drawer-open",
|
||
"w-full text-xs bg-primary/10 text-primary hover:bg-primary hover:text-primary-foreground py-2 rounded-lg transition-colors font-medium disabled:opacity-40",
|
||
"Add to Cart"
|
||
]
|
||
},
|
||
{
|
||
"name": "BestsellingBotanicalsGridSection",
|
||
"importPath": "@/components/sections/BestsellingBotanicalsGridSection",
|
||
"position": 4,
|
||
"role": "unknown",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": 10,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Bestselling Botanicals",
|
||
"{product.title}"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"@/hooks/useMedusaProducts",
|
||
"@/hooks/useMedusaCart",
|
||
"@/components/ui/Card",
|
||
"@/components/ui/Button",
|
||
"@/components/ui/Badge",
|
||
"next/image",
|
||
"next/link",
|
||
"flex justify-center py-16",
|
||
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
|
||
"cart-drawer-open",
|
||
"bestsellingbotanicalsgrid",
|
||
"bestselling-botanicals",
|
||
"py-24 bg-[#f9f5f4]",
|
||
"container mx-auto px-4",
|
||
"text-center mb-14",
|
||
"text-4xl font-bold text-[#21140d]",
|
||
"Bestselling Botanicals",
|
||
"text-lg text-[#8b5a3c] font-serif italic mt-3",
|
||
"South Africa's favourite natural skincare picks – restocked weekly.",
|
||
"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6",
|
||
"group cursor-pointer overflow-hidden rounded-xl border-0 shadow-md hover:shadow-xl transition-all duration-200 relative",
|
||
"relative aspect-[4/3] overflow-hidden bg-[#e2dad4]",
|
||
"(max-width: 768px) 100vw, 33vw",
|
||
"object-cover group-hover:scale-105 transition-transform duration-500",
|
||
"flex items-center justify-center h-full text-[#8b5a3c]",
|
||
"w-12 h-12",
|
||
"none",
|
||
"currentColor",
|
||
"0 0 24 24",
|
||
"round",
|
||
"M15.75 10.5V6a3.75 3.75 0 10-7.5 0v4.5m11.356-1.993l1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 01-1.12-1.243l1.264-12A1.125 1.125 0 015.513 7.5h12.974c.576 0 1.059.435 1.119 1.007zM8.625 10.5a.375.375 0 11-.75 0 .375.375 0 01.75 0zm7.5 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z",
|
||
"accent",
|
||
"absolute top-3 left-3 bg-[#ea580c] text-white",
|
||
"Best Seller",
|
||
"p-4",
|
||
"font-semibold text-[#21140d] truncate",
|
||
"text-[#ea580c] font-bold mt-1",
|
||
"px-4 pb-4 pt-0",
|
||
"default",
|
||
"sm",
|
||
"w-full bg-[#8b5a3c] hover:bg-[#6a442e] text-white",
|
||
"Add to Cart"
|
||
]
|
||
},
|
||
{
|
||
"name": "MostPopularSection",
|
||
"importPath": "@/components/sections/MostPopularSection",
|
||
"position": 5,
|
||
"role": "unknown",
|
||
"hasImage": false,
|
||
"hasForm": false,
|
||
"itemCount": 12,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Most Popular"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"react",
|
||
"@/hooks/useMedusaCart",
|
||
"@/hooks/useMedusaProducts",
|
||
"next/link",
|
||
"lucide-react",
|
||
"KSh",
|
||
"py-20",
|
||
"container mx-auto px-4",
|
||
"grid grid-cols-2 md:grid-cols-4 gap-6",
|
||
"aspect-square rounded-xl bg-muted animate-pulse",
|
||
"mostpopular",
|
||
"flex items-center justify-between mb-10",
|
||
"flex items-center gap-3",
|
||
"h-6 w-6 text-primary",
|
||
"text-xs uppercase tracking-widest text-primary font-semibold mb-1",
|
||
"Best Sellers",
|
||
"text-3xl font-bold text-foreground",
|
||
"Most Popular",
|
||
"text-sm font-semibold text-primary hover:underline underline-offset-4 hidden md:inline-flex items-center gap-1",
|
||
"View all →",
|
||
"grid grid-cols-2 lg:grid-cols-4 gap-6",
|
||
"group bg-card rounded-xl overflow-hidden border border-border hover:shadow-md transition-all relative",
|
||
"absolute top-2 left-2 z-10 bg-primary text-primary-foreground text-xs font-semibold px-2 py-0.5 rounded-full",
|
||
"Best Seller",
|
||
"block overflow-hidden",
|
||
"relative aspect-square bg-muted",
|
||
"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300",
|
||
"w-full h-full flex items-center justify-center",
|
||
"h-8 w-8 text-muted-foreground/30",
|
||
"p-4",
|
||
"text-sm font-semibold text-foreground line-clamp-2 mb-1 hover:text-primary transition-colors",
|
||
"text-sm font-bold text-primary mb-3",
|
||
"cart-drawer-open",
|
||
"w-full text-xs bg-primary/10 text-primary hover:bg-primary hover:text-primary-foreground py-2 rounded-lg transition-colors font-medium disabled:opacity-40",
|
||
"Add to Cart"
|
||
]
|
||
},
|
||
{
|
||
"name": "ProductCarouselSection",
|
||
"importPath": "@/components/sections/ProductCarouselSection",
|
||
"position": 6,
|
||
"role": "services",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": 4,
|
||
"layout": "flex-row",
|
||
"headings": [
|
||
"{section.title}"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"next/image",
|
||
"next/link",
|
||
"@/lib/cms",
|
||
"KSh",
|
||
"x-publishable-api-key",
|
||
"py-8 px-4",
|
||
"max-w-7xl mx-auto",
|
||
"text-xl font-bold mb-5",
|
||
"flex gap-4 overflow-x-auto pb-3 scrollbar-hide snap-x snap-mandatory",
|
||
"flex-none snap-start w-44 group",
|
||
"relative h-44 w-44 rounded-xl overflow-hidden bg-muted mb-2 group-hover:shadow-md transition-shadow",
|
||
"object-cover group-hover:scale-105 transition-transform duration-300",
|
||
"w-full h-full flex items-center justify-center text-muted-foreground text-xs",
|
||
"No image",
|
||
"text-xs font-medium line-clamp-2 group-hover:text-primary transition-colors mb-1",
|
||
"text-xs font-bold text-primary"
|
||
]
|
||
},
|
||
{
|
||
"name": "AdvertBannerSection",
|
||
"importPath": "@/components/sections/AdvertBannerSection",
|
||
"position": 7,
|
||
"role": "hero",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": 4,
|
||
"layout": "flex-row",
|
||
"headings": [
|
||
"{headline}"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"next/image",
|
||
"next/link",
|
||
"@/lib/cms",
|
||
"relative w-full overflow-hidden rounded-2xl my-8 mx-auto max-w-7xl px-4",
|
||
"relative h-64 md:h-80 w-full",
|
||
"object-cover rounded-2xl",
|
||
"absolute inset-0 bg-black/45 rounded-2xl",
|
||
"absolute inset-0 flex flex-col items-center justify-center text-center px-6 gap-3",
|
||
"text-2xl md:text-4xl font-bold text-white drop-shadow",
|
||
"text-sm md:text-base text-white/90",
|
||
"mt-2 inline-block bg-white text-black font-semibold px-6 py-2 rounded-full hover:bg-primary hover:text-white transition-colors text-sm",
|
||
"flex flex-col items-center justify-center gap-3 py-16 px-6 text-center bg-primary/10 rounded-2xl",
|
||
"text-2xl md:text-3xl font-bold",
|
||
"text-muted-foreground",
|
||
"inline-block bg-primary text-white font-semibold px-6 py-2 rounded-full hover:bg-primary/80 transition-colors text-sm"
|
||
]
|
||
},
|
||
{
|
||
"name": "BrandCarouselSection",
|
||
"importPath": "@/components/sections/BrandCarouselSection",
|
||
"position": 8,
|
||
"role": "partners",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": 4,
|
||
"layout": "flex-row",
|
||
"headings": [
|
||
"Shop by Collection"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"react",
|
||
"next/link",
|
||
"next/image",
|
||
"py-10 px-4",
|
||
"max-w-7xl mx-auto",
|
||
"text-xl font-bold mb-5",
|
||
"Shop by Collection",
|
||
"flex gap-4 overflow-x-auto pb-3 scrollbar-hide snap-x snap-mandatory",
|
||
"flex-none snap-start w-36 group",
|
||
"relative h-36 w-36 rounded-2xl overflow-hidden bg-muted mb-2 group-hover:shadow-md transition-shadow",
|
||
"object-cover group-hover:scale-105 transition-transform duration-300",
|
||
"w-full h-full flex items-center justify-center text-3xl font-bold text-primary/30 uppercase",
|
||
"text-xs font-medium text-center line-clamp-2 group-hover:text-primary transition-colors"
|
||
]
|
||
},
|
||
{
|
||
"name": "NurturingCampaignsSection",
|
||
"importPath": "@/components/sections/NurturingCampaignsSection",
|
||
"position": 9,
|
||
"role": "cms-campaigns",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": -1,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Seasonal Blends & Limited Drops"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"@/hooks/useVulaContent",
|
||
"@/components/ui/Card",
|
||
"@/components/ui/Button",
|
||
"@/components/ui/Badge",
|
||
"next/image",
|
||
"campaigns",
|
||
"flex justify-center py-16",
|
||
"w-8 h-8 rounded-full border-2 border-[#8b5a3c] border-t-transparent animate-spin",
|
||
"nurturing-campaigns",
|
||
"nurturingcampaigns",
|
||
"py-20 bg-[#f9f5f4]",
|
||
"container mx-auto px-4",
|
||
"text-4xl font-bold text-[#21140d] mb-4 text-center",
|
||
"Seasonal Blends & Limited Drops",
|
||
"text-[#16a34a] italic text-center mb-12 max-w-2xl mx-auto",
|
||
"Small-batch creations rooted in our Pretoria studio",
|
||
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",
|
||
"overflow-hidden hover:shadow-lg transition-all duration-200 ease-out",
|
||
"relative h-56 overflow-hidden",
|
||
"Campaign image",
|
||
"(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw",
|
||
"object-cover hover:scale-105 transition-transform duration-500 ease-out",
|
||
"accent",
|
||
"absolute top-3 left-3",
|
||
"Limited Edition",
|
||
"text-[#8b5a3c]",
|
||
"text-[#16a34a] font-medium",
|
||
"text-[#21140d] line-clamp-3",
|
||
"default",
|
||
"md",
|
||
"w-full",
|
||
"Shop Now"
|
||
],
|
||
"cmsCollection": "campaigns"
|
||
},
|
||
{
|
||
"name": "RootedMomentsGallerySection",
|
||
"importPath": "@/components/sections/RootedMomentsGallerySection",
|
||
"position": 10,
|
||
"role": "gallery",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": -1,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Rooted Moments from Our Community"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"react",
|
||
"@/hooks/useVulaContent",
|
||
"@/components/ui/Modal",
|
||
"next/image",
|
||
"gallery",
|
||
"flex justify-center py-16",
|
||
"w-8 h-8 rounded-full border-2 border-[#8b5a3c] border-t-transparent animate-spin",
|
||
"rooted-moments-gallery",
|
||
"rootedmomentsgallery",
|
||
"py-20 bg-white",
|
||
"container mx-auto px-4",
|
||
"text-4xl font-bold text-[#21140d] mb-4 text-center",
|
||
"Rooted Moments from Our Community",
|
||
"text-[#16a34a] italic text-center mb-12 max-w-2xl mx-auto",
|
||
"Real customers, real skin stories – straight from Pretoria",
|
||
"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",
|
||
"relative aspect-square overflow-hidden rounded-2xl cursor-pointer group",
|
||
"Gallery photo",
|
||
"(max-width: 768px) 50vw, (max-width: 1200px) 33vw, 25vw",
|
||
"object-cover group-hover:scale-105 transition-transform duration-500 ease-out",
|
||
"absolute inset-0 bg-black/20 opacity-0 group-hover:opacity-100 transition-opacity duration-200 ease-out",
|
||
"max-w-4xl",
|
||
"relative w-full h-[70vh]",
|
||
"Enlarged gallery photo",
|
||
"100vw",
|
||
"object-contain"
|
||
],
|
||
"cmsCollection": "gallery"
|
||
},
|
||
{
|
||
"name": "VoicesOfNurtureTestimonialsSection",
|
||
"importPath": "@/components/sections/VoicesOfNurtureTestimonialsSection",
|
||
"position": 11,
|
||
"role": "testimonials",
|
||
"hasImage": false,
|
||
"hasForm": false,
|
||
"itemCount": 3,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Voices of Nurture"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"Thandi Mokoena",
|
||
"Midrand regular",
|
||
"The marula body butter healed my dry patches within a week — now it steals my morning.",
|
||
"Liam Botha",
|
||
"First-time buyer",
|
||
"Bought the rooibos face oil for my mom. She says it smells like her grandmother's garden.",
|
||
"Naledi Nkosi",
|
||
"Skin therapist from Rosebank",
|
||
"I recommend Ndlovu Naturals to every client. Cold-pressed buchu is a game changer for acne.",
|
||
"voices-of-nurture",
|
||
"voicesofnurturetestimonials",
|
||
"testimonials",
|
||
"py-20 bg-[#f9f5f4]",
|
||
"container mx-auto px-4",
|
||
"text-4xl font-bold text-[#21140d] mb-4 text-center",
|
||
"Voices of Nurture",
|
||
"text-[#16a34a] italic text-center mb-12 max-w-2xl mx-auto",
|
||
"What our community says about their skin journey",
|
||
"grid grid-cols-1 md:grid-cols-3 gap-6",
|
||
"rounded-xl bg-white p-6 border border-[#e2dad4] shadow-sm",
|
||
"text-[#21140d] italic mb-4 leading-relaxed",
|
||
"font-semibold text-[#8b5a3c]",
|
||
"text-sm text-[#16a34a]"
|
||
]
|
||
},
|
||
{
|
||
"name": "ConnectWithUsSection",
|
||
"importPath": "@/components/sections/ConnectWithUsSection",
|
||
"position": 12,
|
||
"role": "unknown",
|
||
"hasImage": false,
|
||
"hasForm": true,
|
||
"itemCount": 11,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Let's talk botanicals",
|
||
"Reach us directly",
|
||
"Follow our story"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"react",
|
||
"@/components/ui/Button",
|
||
"@/components/ui/Input",
|
||
"lucide-react",
|
||
"connectwithus",
|
||
"connect-with-us",
|
||
"py-20 bg-[#f9f5f4]",
|
||
"container mx-auto px-4 max-w-4xl",
|
||
"text-center mb-14",
|
||
"text-4xl font-serif font-bold text-[#21140d] mb-4",
|
||
"Let's talk botanicals",
|
||
"text-lg text-[#21140d]/70 max-w-xl mx-auto leading-relaxed",
|
||
"Whether you need product advice, wholesale pricing, or a ritual recommendation —\n send us a note. We reply personally within 24 hours.",
|
||
"grid md:grid-cols-2 gap-12 items-start",
|
||
"space-y-5",
|
||
"connect-name",
|
||
"block text-sm font-medium text-[#21140d]/80 mb-1",
|
||
"Your name",
|
||
"Thandi",
|
||
"w-full border-[#e2dad4] bg-white",
|
||
"connect-email",
|
||
"Email address",
|
||
"email",
|
||
"thandi@example.com",
|
||
"connect-message",
|
||
"Message",
|
||
"What brings you here?",
|
||
"w-full border border-[#e2dad4] rounded-lg p-3 bg-white text-[#21140d] placeholder:text-[#21140d]/40 focus:outline-none focus:ring-2 focus:ring-[#8b5a3c]",
|
||
"submit",
|
||
"default",
|
||
"lg",
|
||
"w-full bg-[#8b5a3c] hover:bg-[#7a4d32] text-white transition-all duration-200",
|
||
"Send message",
|
||
"ml-2 h-4 w-4",
|
||
"space-y-6 pt-2",
|
||
"bg-white rounded-xl p-6 border border-[#e2dad4]",
|
||
"text-lg font-semibold text-[#21140d] mb-3",
|
||
"Reach us directly",
|
||
"space-y-3",
|
||
"mailto:hello@ndlovunaturals.co.za",
|
||
"flex items-center gap-3 text-[#21140d]/70 hover:text-[#8b5a3c] transition-colors",
|
||
"w-5 h-5 text-[#8b5a3c]",
|
||
"hello@ndlovunaturals.co.za",
|
||
"tel:+27761234567",
|
||
"w-5 h-5 text-[#16a34a]",
|
||
"+27 76 123 4567",
|
||
"Follow our story",
|
||
"flex gap-4",
|
||
"_blank"
|
||
]
|
||
},
|
||
{
|
||
"name": "VisitOurPretoriaOasisSection",
|
||
"importPath": "@/components/sections/VisitOurPretoriaOasisSection",
|
||
"position": 13,
|
||
"role": "unknown",
|
||
"hasImage": true,
|
||
"hasForm": false,
|
||
"itemCount": -1,
|
||
"layout": "grid",
|
||
"headings": [
|
||
"Visit our little oasis in Pretoria",
|
||
"Ndlovu Naturals location in Pretoria"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"@/hooks/useVulaContent",
|
||
"lucide-react",
|
||
"@/components/ui/Button",
|
||
"next/image",
|
||
"business_hours",
|
||
"flex justify-center py-16",
|
||
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
|
||
"visit-pretoria-oasis",
|
||
"py-20 bg-white",
|
||
"container mx-auto px-4 max-w-6xl",
|
||
"grid md:grid-cols-2 gap-12 items-center",
|
||
"text-4xl font-serif font-bold text-[#21140d] mb-4",
|
||
"Visit our little oasis in Pretoria",
|
||
"text-lg text-[#21140d]/70 mb-8 leading-relaxed",
|
||
"Come smell the botanicals, feel the textures, and meet the hands that\n craft each batch. Our workshop door is always open — just knock and\n say you're from the land of marula.",
|
||
"bg-[#f9f5f4] rounded-xl p-6 space-y-4 mb-8",
|
||
"flex gap-3",
|
||
"w-5 h-5 text-[#8b5a3c] mt-0.5 shrink-0",
|
||
"font-semibold text-[#21140d]",
|
||
"Ndlovu Naturals Workshop",
|
||
"text-[#21140d]/70",
|
||
"123 Lynnwood Road, Pretoria,",
|
||
"Gauteng 0002",
|
||
"font-semibold text-[#21140d] mb-2",
|
||
"Opening hours",
|
||
"space-y-1 text-sm",
|
||
"flex justify-between gap-4",
|
||
"text-[#21140d]/80",
|
||
"text-[#ea580c] font-medium",
|
||
"Closed",
|
||
"text-xs text-[#21140d]/50 mt-2",
|
||
"default",
|
||
"lg",
|
||
"bg-[#8b5a3c] hover:bg-[#7a4d32] text-white",
|
||
"_blank",
|
||
"Get directions",
|
||
"ml-2 h-4 w-4",
|
||
"relative h-80 md:h-full min-h-[300px] rounded-xl overflow-hidden shadow-lg",
|
||
"Ndlovu Naturals workshop interior",
|
||
"object-cover",
|
||
"(max-width: 768px) 100vw, 50vw",
|
||
"mt-12 rounded-xl overflow-hidden shadow-lg aspect-video",
|
||
"100%",
|
||
"lazy",
|
||
"no-referrer-when-downgrade",
|
||
"Ndlovu Naturals location in Pretoria"
|
||
],
|
||
"cmsCollection": "business_hours"
|
||
},
|
||
{
|
||
"name": "RootedNewsletterSection",
|
||
"importPath": "@/components/sections/RootedNewsletterSection",
|
||
"position": 14,
|
||
"role": "blog",
|
||
"hasImage": false,
|
||
"hasForm": true,
|
||
"itemCount": 4,
|
||
"layout": "unknown",
|
||
"headings": [
|
||
"Stay rooted with us"
|
||
],
|
||
"buttonLabels": [],
|
||
"people": [],
|
||
"allText": [
|
||
"use client",
|
||
"react",
|
||
"@/components/ui/Button",
|
||
"@/components/ui/Input",
|
||
"lucide-react",
|
||
"rootednewsletter",
|
||
"rooted-newsletter",
|
||
"py-20 bg-[#8b5a3c]",
|
||
"container mx-auto px-4 max-w-2xl text-center",
|
||
"text-4xl font-serif font-bold text-white mb-4",
|
||
"Stay rooted with us",
|
||
"text-lg text-white/80 mb-10 leading-relaxed",
|
||
"Stories of indigenous botanicals, skincare rituals, and subscriber-only\n early access to new small batches — delivered to your inbox.",
|
||
"bg-white/10 rounded-xl p-8 backdrop-blur-sm",
|
||
"text-xl text-white font-semibold",
|
||
"Thank you! You're now on the list.",
|
||
"text-white/70 mt-2",
|
||
"Watch for your first story soon.",
|
||
"space-y-4 max-w-md mx-auto",
|
||
"Your name",
|
||
"w-full border-white/20 bg-white/95 text-[#21140d] placeholder:text-[#21140d]/40",
|
||
"email",
|
||
"Your email address",
|
||
"submit",
|
||
"default",
|
||
"lg",
|
||
"w-full bg-[#ea580c] hover:bg-[#d4520a] text-white transition-all duration-200",
|
||
"Join the circle",
|
||
"ml-2 h-4 w-4"
|
||
]
|
||
}
|
||
],
|
||
"navigationLinks": [
|
||
"Ndlovu Naturals",
|
||
"Home",
|
||
"Rooted Moments Gallery",
|
||
"Connect With Us",
|
||
"Visit Our Pretoria Oasis",
|
||
"Products"
|
||
]
|
||
} |