diff --git a/vula-index.json b/vula-index.json new file mode 100644 index 0000000..6485771 --- /dev/null +++ b/vula-index.json @@ -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", + "Mon–Fri 9:00–17:00 · Sat 9:00–13: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" + ] +} \ No newline at end of file