This commit is contained in:
Vula Builder
2026-07-31 18:44:22 +00:00
parent 49d2679881
commit 26ff792590
+565
View File
@@ -0,0 +1,565 @@
{
"projectName": "eKhayalami",
"businessType": "",
"industry": "",
"tone": "",
"tier": 3,
"generatedAt": "2026-07-31T17:52:49.447Z",
"sections": [
{
"name": "HeroSection",
"importPath": "@/components/sections/HeroSection",
"position": 0,
"role": "hero",
"hasImage": true,
"hasForm": false,
"itemCount": 3,
"layout": "flex-row",
"headings": [],
"buttonLabels": [],
"people": [],
"allText": [
"next/image",
"next/link",
"hero",
"relative min-h-[88vh] text-white",
"eKhayalami",
"absolute inset-0 object-cover",
"100vw",
"absolute inset-0",
"linear-gradient(135deg, #ea580c, #36454F)",
"absolute inset-0 bg-gradient-to-t from-black/60 via-black/30 to-black/10",
"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 Durban-born homeware brand that fuses rural KZN women's cooperative",
"text-[#6b8e23]",
"craftsmanship with.",
"text-lg lg:text-xl text-white/80 max-w-2xl mb-9",
"Professional handcrafted homeware online store in South Africa.",
"inline-block bg-[#6b8e23] text-white px-8 py-4 text-base font-bold rounded-xl shadow-lg hover:-translate-y-0.5 transition-all duration-200",
"Shop now"
]
},
{
"name": "OurHeritageSection",
"importPath": "@/components/sections/OurHeritageSection",
"position": 1,
"role": "unknown",
"hasImage": true,
"hasForm": false,
"itemCount": 7,
"layout": "grid",
"headings": [
"From rural KZN looms to Durban living rooms."
],
"buttonLabels": [
"Explore the Craft"
],
"people": [],
"allText": [
"next/image",
"next/link",
"@/components/ui/Button",
"ourheritage",
"our-heritage",
"bg-[#f9f5f4] py-20 lg:py-28",
"mx-auto max-w-7xl px-4 sm:px-6 lg:px-8",
"grid items-center gap-12 lg:grid-cols-2",
"relative",
"Artisan hands crafting woven textiles in rural KwaZulu-Natal",
"rounded-3xl object-cover shadow-2xl",
"absolute -bottom-8 -right-4 w-56 rotate-6 rounded-3xl border-8 border-white shadow-xl sm:-right-8",
"Handwoven cushions styled in a contemporary living room",
"rounded-2xl object-cover",
"absolute -top-6 left-4 -rotate-3 rounded-full bg-[#ea580c] px-5 py-3 text-sm font-semibold text-white shadow-lg",
"Nongoma · Bulwer · Impendle · Hluhluwe",
"text-sm font-semibold uppercase tracking-[0.2em] text-[#6b8e23]",
"Our Heritage",
"mt-4 text-3xl font-bold text-[#21140d] sm:text-4xl lg:text-5xl",
"From rural KZN looms to Durban living rooms.",
"mt-6 space-y-4 font-serif text-lg leading-relaxed text-[#36454F]",
"Every cushion and throw starts in a cooperative, not a factory. We work with women-led groups in Nongoma, Bulwer, Impendle and Hluhluwe who hand-weave, bead and dye each piece using patterns passed down through generations.",
"Durban's design studio then pairs those textured originals with contemporary colourways and refined finishes, so the work sits naturally in an Umhlanga apartment or a Johannesburg loft.",
"When you buy from eKhayalami, you are not just buying a cushion — you are keeping a Nongoma beadwork technique alive and paying a Bulwer weaver fairly.",
"outline",
"lg",
"mt-8 border-[#36454F] text-[#36454F] hover:bg-[#36454F] hover:text-white",
"Explore the Craft"
]
},
{
"name": "ArtisanStoriesSection",
"importPath": "@/components/sections/ArtisanStoriesSection",
"position": 2,
"role": "blog",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"Stories stitched into every weave",
"{d?.title}"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"next/image",
"@/components/ui/Badge",
"@/hooks/useVulaContent",
"posts",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-[#ea580c] border-t-transparent animate-spin",
"artisan-stories",
"artisanstories",
"bg-[#f9f5f4] py-20",
"mx-auto max-w-7xl px-4",
"mb-12 flex flex-col gap-4 md:flex-row md:items-end md:justify-between",
"max-w-2xl",
"text-sm font-semibold uppercase tracking-[0.2em] text-[#6b8e23]",
"Women of Nongoma, Bulwer, Impendle & Hluhluwe",
"mt-2 font-display text-3xl md:text-5xl text-[#21140d]",
"Stories stitched into every weave",
"grid gap-8",
"grid items-center gap-8 md:grid-cols-2",
"md:order-2",
"Artisan story",
"(max-width: 768px) 100vw, 50vw",
"object-cover transition-transform duration-500 ease-out hover:scale-105",
"h-full bg-[#e2d9d4]",
"md:order-1",
"accent",
"mt-3 font-display text-2xl text-[#21140d]",
"mt-3 text-[#36454F]",
"mt-4 text-sm font-semibold text-[#ea580c]",
"By"
],
"cmsCollection": "posts"
},
{
"name": "CampaignsSection",
"importPath": "@/components/sections/CampaignsSection",
"position": 3,
"role": "cms-campaigns",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"Seasonal colour, made in small batches",
"{d?.headline}",
"{x?.headline || x?.title}"
],
"buttonLabels": [
"Shop all products"
],
"people": [],
"allText": [
"use client",
"next/image",
"next/link",
"@/components/ui/Button",
"@/hooks/useVulaContent",
"campaigns",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-[#ea580c] border-t-transparent animate-spin",
"seasonal-offers",
"bg-[#f9f5f4] py-20",
"mx-auto max-w-7xl px-4",
"mb-12 flex flex-col md:flex-row md:items-end md:justify-between gap-4",
"text-sm font-semibold uppercase tracking-[0.2em] text-[#6b8e23]",
"Fresh from KZN co-ops",
"mt-2 font-display text-3xl md:text-5xl text-[#21140d]",
"Seasonal colour, made in small batches",
"shrink-0",
"outline",
"Shop all products",
"grid gap-6 lg:grid-cols-2",
"relative min-h-[420px] overflow-hidden rounded-2xl bg-[#36454F]",
"Campaign",
"(max-width: 768px) 100vw, 50vw",
"object-cover",
"absolute inset-0 bg-gradient-to-t from-[#21140d]/80 via-[#21140d]/20 to-transparent",
"absolute bottom-0 p-8 text-[#f9f5f4]",
"mt-2 font-display text-2xl md:text-3xl",
"mt-3 max-w-xl text-sm md:text-base text-[#f9f5f4]/80",
"mt-5 inline-block",
"default",
"grid gap-6",
"group relative min-h-[200px] overflow-hidden rounded-2xl bg-[#36454F]",
"object-cover transition-transform duration-500 ease-out group-hover:scale-105",
"absolute inset-0 bg-gradient-to-t from-[#21140d]/70 to-transparent",
"absolute bottom-0 p-6 text-[#f9f5f4]",
"font-display text-xl",
"mt-1 line-clamp-2 text-sm text-[#f9f5f4]/80"
],
"cmsCollection": "campaigns"
},
{
"name": "FeaturedProductsSection",
"importPath": "@/components/sections/FeaturedProductsSection",
"position": 4,
"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/useVulaCart",
"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": "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/useVulaCart",
"@/hooks/useProducts",
"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": "GallerySection",
"importPath": "@/components/sections/GallerySection",
"position": 6,
"role": "gallery",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"A visual diary of making and home"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"next/image",
"@/hooks/useVulaContent",
"gallery",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-[#ea580c] border-t-transparent animate-spin",
"artisans-gallery",
"bg-[#36454F] py-20 text-[#f9f5f4]",
"mx-auto max-w-7xl px-4",
"mb-12 max-w-2xl",
"text-sm font-semibold uppercase tracking-[0.2em] text-[#6b8e23]",
"From Bulwer weaving circles to Durban lounges",
"mt-2 font-display text-3xl md:text-5xl",
"A visual diary of making and home",
"grid auto-rows-[170px] grid-cols-2 gap-3 md:grid-cols-4",
"md:col-span-2 md:row-span-2",
"md:col-span-2",
"Gallery image",
"(max-width: 768px) 100vw, 50vw",
"object-cover transition-transform duration-500 ease-out group-hover:scale-105",
"h-full bg-[#21140d]/40",
"absolute inset-0 bg-gradient-to-t from-[#21140d]/70 via-transparent to-transparent",
"absolute bottom-0 left-0 right-0 p-5",
"font-semibold",
"mt-1 line-clamp-2 text-sm text-[#f9f5f4]/70"
],
"cmsCollection": "gallery"
},
{
"name": "BrandCarouselSection",
"importPath": "@/components/sections/BrandCarouselSection",
"position": 7,
"role": "partners",
"hasImage": false,
"hasForm": false,
"itemCount": 3,
"layout": "flex-row",
"headings": [
"Shop by Category"
],
"buttonLabels": [],
"people": [],
"allText": [
"next/link",
"py-10 px-4",
"max-w-7xl mx-auto",
"text-xl font-bold mb-5",
"Shop by Category",
"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 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": "AdvertBannerSection",
"importPath": "@/components/sections/AdvertBannerSection",
"position": 8,
"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": "ProductCarouselSection",
"importPath": "@/components/sections/ProductCarouselSection",
"position": 9,
"role": "services",
"hasImage": true,
"hasForm": false,
"itemCount": 4,
"layout": "flex-row",
"headings": [
"{section.title}"
],
"buttonLabels": [],
"people": [],
"allText": [
"next/image",
"next/link",
"@/lib/cms",
"KSh",
"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": "ShopCTASection",
"importPath": "@/components/sections/ShopCTASection",
"position": 10,
"role": "cta",
"hasImage": true,
"hasForm": false,
"itemCount": 7,
"layout": "grid",
"headings": [
"Bring the Spirit of KZN Home"
],
"buttonLabels": [],
"people": [],
"allText": [
"next/image",
"next/link",
"lucide-react",
"shopcta",
"shop-collection",
"relative isolate overflow-hidden bg-[#36454F] py-20 lg:py-28",
"mx-auto max-w-7xl px-4 sm:px-6",
"grid items-center gap-12 lg:grid-cols-2",
"relative z-10",
"text-xs font-semibold uppercase tracking-[0.25em] text-[#6b8e23]",
"The full collection",
"mt-4 max-w-2xl text-4xl font-bold leading-tight text-[#f9f5f4] sm:text-5xl",
"var(--font-bricolage, sans-serif)",
"Bring the Spirit of KZN Home",
"mt-5 max-w-xl text-lg leading-relaxed text-[#f9f5f4]/85",
"Every cushion, throw and ceramic begins in a rural KwaZulu-Natal community — Nongoma, Bulwer, Impendle and Hluhluwe — made by women-led co-operatives who pass their techniques from generation to generation.",
"mt-8 flex flex-wrap items-center gap-4",
"inline-flex items-center justify-center rounded-xl bg-[#ea580c] px-7 py-3.5 text-base font-bold text-white shadow-lg shadow-[#ea580c]/20 transition-all duration-200 ease-out hover:-translate-y-0.5 hover:bg-[#c2450a]",
"Shop the Collection",
"ml-2 h-5 w-5",
"text-sm font-medium text-[#f9f5f4]/70",
"Free nationwide delivery over R1 000 · EFT and cards accepted",
"relative hidden lg:block",
"relative aspect-[4/3] overflow-hidden rounded-3xl shadow-2xl",
"Modern living room styled with handwoven South African cushions and throws",
"(max-width: 1024px) 0px, 580px",
"object-cover",
"Rural KwaZulu-Natal landscape and artisan heritage overlay",
"object-cover opacity-50 mix-blend-multiply",
"absolute -bottom-6 -left-8 rotate-[-3deg] rounded-2xl bg-[#6b8e23] px-6 py-4 text-[#f9f5f4] shadow-xl",
"text-sm font-bold uppercase tracking-wider",
"Women-led co-ops",
"text-xs opacity-90",
"Nongoma · Bulwer · Impendle · Hluhluwe"
]
},
{
"name": "ContactSection",
"importPath": "@/components/sections/ContactSection",
"position": 11,
"role": "contact",
"hasImage": true,
"hasForm": true,
"itemCount": 4,
"layout": "grid",
"headings": [
"Let's find the piece for your space.",
"Sawubona! Enquiry received.",
"Send an enquiry"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"react",
"next/image",
"@/components/ui/Input",
"@/components/ui/Button",
"@/components/ui/Badge",
"lucide-react",
"Visit",
"12 Florida Road, Morningside, Durban, 4001",
"Call us",
"+27 31 555 0148",
"Email",
"hello@ekhayalami.co.za",
"Hours",
"MonFri 9:0017:00 · Sat 9:0013:00",
"Customer styling eKhayalami throws in a bright Durban home",
"Hand-thrown ceramic vase from the Impendle co-op",
"Pattern detail inspired by Southern African beadwork",
"contact",
"bg-[#f9f5f4] py-20 lg:py-28",
"mx-auto max-w-7xl px-4 sm:px-6",
"grid gap-12 lg:grid-cols-2",
"accent",
"mb-4 px-3 py-1 text-xs",
"Durban studio · open all week",
"text-4xl font-bold leading-tight text-[#21140d] sm:text-5xl",
"var(--font-bricolage, sans-serif)",
"Let's find the piece for your space.",
"mt-4 max-w-xl text-lg leading-relaxed text-[#36454F]",
"Whether you need personalised styling advice or a curated corporate gift box, our Durban team will connect you directly with the right makers from Nongoma, Bulwer, Impendle and Hluhluwe.",
"mt-8 space-y-4",
"flex items-start gap-4 rounded-2xl bg-white p-4 shadow-sm",
"rounded-xl bg-[#f9f5f4] p-2.5 text-[#ea580c]",
"h-5 w-5",
"text-xs font-semibold uppercase tracking-wider text-[#6b8e23]",
"font-medium text-[#21140d]",
"_blank",
"noreferrer",
"mt-6 inline-flex items-center gap-3 rounded-xl bg-[#6b8e23] px-5 py-3 font-semibold text-white transition-all duration-200 ease-out hover:-translate-y-0.5 hover:bg-[#576f1b]",
"WhatsApp Us — we reply within a day",
"mt-10",
"text-lg font-semibold text-[#21140d]",
"Tag us",
"text-[#ea580c]",
"#eKhayalamiStyling",
"text-sm text-[#36454F]",
"Share your space and join a growing community of craft-led homes.",
"mt-4 grid grid-cols-3 gap-3",
"relative aspect-square overflow-hidden rounded-2xl",
"(max-width: 768px) 30vw, 160px"
]
}
],
"navigationLinks": [
"eKhayalami",
"Home",
"Our Heritage",
"Gallery",
"Artisan Stories",
"Shop C T A",
"Contact",
"Products",
"My Account"
]
}