From 0080dfb3044d95e86cf6221761fce67f93185c43 Mon Sep 17 00:00:00 2001 From: Vula Builder Date: Fri, 31 Jul 2026 14:12:27 +0000 Subject: [PATCH] Deploy --- vula-index.json | 576 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 576 insertions(+) create mode 100644 vula-index.json diff --git a/vula-index.json b/vula-index.json new file mode 100644 index 0000000..ff34432 --- /dev/null +++ b/vula-index.json @@ -0,0 +1,576 @@ +{ + "projectName": "iKhaya Home", + "businessType": "", + "industry": "", + "tone": "", + "tier": 3, + "generatedAt": "2026-07-31T13:51:44.277Z", + "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", + "iKhaya Home", + "absolute inset-0 object-cover", + "100vw", + "absolute inset-0", + "linear-gradient(135deg, #ea580c, #6b8e23)", + "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-based online homeware brand offering handcrafted cushions, throws,", + "text-[#8b5a3c]", + "and ceramics.", + "text-lg lg:text-xl text-white/80 max-w-2xl mb-9", + "Professional online homeware store in South Africa.", + "inline-block bg-[#8b5a3c] 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": "IkayaStorySection", + "importPath": "@/components/sections/IkayaStorySection", + "position": 1, + "role": "blog", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "Latest Posts", + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "@/hooks/useVulaContent", + "posts", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "ikayastory", + "py-16 bg-gray-50", + "max-w-6xl mx-auto px-4 sm:px-6 lg:px-8", + "text-center mb-10", + "text-3xl font-bold text-gray-900", + "Latest Posts", + "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8", + "bg-white rounded-xl overflow-hidden shadow-sm hover:shadow-md transition-shadow", + "relative h-48", + "object-cover", + "p-6", + "text-xs font-semibold uppercase tracking-wide text-blue-600", + "mt-2 text-lg font-bold text-gray-900 leading-snug", + "mt-2 text-gray-600 text-sm line-clamp-3", + "mt-4 text-xs text-gray-400", + "By" + ], + "cmsCollection": "posts" + }, + { + "name": "FeaturedProductsSection", + "importPath": "@/components/sections/FeaturedProductsSection", + "position": 2, + "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": 3, + "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": "AdvertBannerSection", + "importPath": "@/components/sections/AdvertBannerSection", + "position": 4, + "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": 5, + "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": "BrandCarouselSection", + "importPath": "@/components/sections/BrandCarouselSection", + "position": 6, + "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": "FindYourIkayaStyleSection", + "importPath": "@/components/sections/FindYourIkayaStyleSection", + "position": 7, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": 5, + "layout": "flex-row", + "headings": [ + "Ready to bring iKhaya into your home?" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "next/link", + "lucide-react", + "findyourikayastyle", + "find-your-style", + "relative overflow-hidden bg-[#21140d]", + "relative h-[70vh] lg:h-[80vh]", + "Sunlit Durban lounge styled with iKhaya cushions, throws and ceramics", + "100vw", + "object-cover opacity-80", + "absolute inset-0 bg-gradient-to-r from-[#21140d]/75 via-[#21140d]/30 to-transparent", + "absolute inset-0 flex items-center", + "mx-auto w-full max-w-6xl px-4", + "max-w-xl", + "mb-3 text-sm font-semibold uppercase tracking-widest text-[#e2d9d4]", + "The iKhaya Edit", + "font-display text-4xl leading-tight text-white sm:text-5xl lg:text-6xl", + "Ready to bring iKhaya into your home?", + "mt-6 mb-8 max-w-md text-lg text-[#f9f5f4]/90", + "Shop handcrafted cushions, throws and ceramics made by Durban artisans — shipped nationwide.", + "inline-flex items-center gap-2 rounded-xl bg-[#ea580c] px-6 py-3.5 text-base font-semibold text-white transition-all duration-200 ease-out hover:gap-3 hover:bg-[#c24a0a]", + "Explore the collection", + "h-5 w-5" + ] + }, + { + "name": "KhulumaNathiSection", + "importPath": "@/components/sections/KhulumaNathiSection", + "position": 8, + "role": "unknown", + "hasImage": false, + "hasForm": true, + "itemCount": -1, + "layout": "grid", + "headings": [ + "Tell us about your space — we’re listening.", + "Send us a note" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "react", + "lucide-react", + "@/components/ui/Button", + "@/components/ui/Input", + "@/hooks/useVulaContent", + "27825550147", + "hello@ikhayahome.co.za", + "business_hours", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "contact", + "khulumanathi", + "bg-[#f9f5f4] py-20 px-4", + "mx-auto grid max-w-6xl gap-12 lg:grid-cols-2 lg:items-start", + "text-sm font-semibold uppercase tracking-widest text-[#8b5a3c]", + "Khuluma nathi", + "mt-2 font-display text-4xl leading-tight text-[#21140d]", + "Tell us about your space — we’re listening.", + "mt-4 mb-8 text-[#5b463a]", + "Need help choosing cushion colours or ceramic finishes? Our Durban studio replies within one working day.", + "space-y-4", + "_blank", + "noreferrer", + "flex items-center gap-4 rounded-2xl border border-[#e2d9d4] bg-white p-4 transition-all duration-200 ease-out hover:border-[#6b8e23] hover:shadow-md", + "h-6 w-6 text-[#6b8e23]", + "block text-sm text-[#8b5a3c]", + "WhatsApp us", + "font-semibold text-[#21140d]", + "Chat to the studio", + "flex items-center gap-4 rounded-2xl border border-[#e2d9d4] bg-white p-4 transition-all duration-200 ease-out hover:border-[#ea580c] hover:shadow-md", + "h-6 w-6 text-[#ea580c]", + "Email us", + "mt-8 rounded-2xl border border-[#e2d9d4] bg-white/70 p-6", + "mb-4 flex items-center gap-2 font-display text-xl text-[#21140d]", + "h-5 w-5 text-[#ea580c]", + "Trading hours", + "divide-y divide-[#e2d9d4]", + "flex items-center justify-between py-2 text-sm", + "text-[#21140d]", + "font-medium text-[#6b8e23]", + "Closed", + "mt-3 text-xs text-[#8b5a3c]", + "Open on public holidays — call ahead to confirm.", + "rounded-2xl border border-[#e2d9d4] bg-white p-6 shadow-lg sm:p-8", + "font-display text-2xl text-[#21140d]", + "Send us a note", + "mt-1 mb-6 text-sm text-[#5b463a]", + "No question is too small.", + "Your name" + ], + "cmsCollection": "business_hours" + }, + { + "name": "IkayaMailSection", + "importPath": "@/components/sections/IkayaMailSection", + "position": 9, + "role": "unknown", + "hasImage": false, + "hasForm": true, + "itemCount": 2, + "layout": "flex-row", + "headings": [ + "Join the iKhaya family" + ], + "buttonLabels": [ + "Sign me up" + ], + "people": [], + "allText": [ + "use client", + "react", + "lucide-react", + "@/components/ui/Button", + "@/components/ui/Input", + "ikayamail", + "newsletter", + "bg-[#8b5a3c] px-4 py-16", + "mx-auto max-w-3xl rounded-3xl border border-[#e2d9d4] bg-white p-8 text-center shadow-lg sm:p-12", + "mx-auto mb-4 inline-flex h-12 w-12 items-center justify-center rounded-2xl bg-[#f9f5f4] text-[#ea580c]", + "h-6 w-6", + "font-display text-3xl text-[#21140d] sm:text-4xl", + "Join the iKhaya family", + "mx-auto mt-3 mb-8 max-w-xl text-[#5b463a]", + "First access to new artisan collections, design inspiration from Durban, and the stories behind every hand-painted pattern. No hard sell — just an invitation to stay connected.", + "font-semibold text-[#6b8e23]", + "Sawubona! Check your inbox to confirm your welcome note.", + "mx-auto flex max-w-md flex-col gap-3 sm:flex-row", + "email", + "Your email address", + "flex-1", + "submit", + "default", + "Sign me up" + ] + }, + { + "name": "iKhayaHeroSection", + "importPath": "@/components/sections/iKhayaHeroSection", + "position": 99, + "role": "hero", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "flex-row", + "headings": [ + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "@/hooks/useVulaContent", + "hero_banners", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "ikhayahero", + "relative overflow-hidden bg-gray-900 text-white", + "relative min-h-[480px] flex items-center", + "object-cover opacity-40", + "relative z-10 max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-24", + "text-4xl sm:text-5xl font-bold mb-4 max-w-2xl", + "text-xl text-gray-200 mb-8 max-w-xl", + "inline-flex items-center px-8 py-3 bg-white text-gray-900 font-bold rounded-full hover:bg-gray-100 transition-colors" + ], + "cmsCollection": "hero_banners" + }, + { + "name": "iKhayaOffersSection", + "importPath": "@/components/sections/iKhayaOffersSection", + "position": 99, + "role": "cms-campaigns", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "flex-row", + "headings": [ + "{d.headline}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "@/hooks/useVulaContent", + "campaigns", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "ikhayaoffers", + "py-16 bg-gray-900 text-white", + "max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 space-y-10", + "relative overflow-hidden rounded-2xl shadow-xl min-h-[320px] flex items-end", + "object-cover opacity-40", + "relative z-10 p-8 sm:p-12 max-w-2xl", + "text-xs font-bold uppercase tracking-widest text-yellow-400 mb-2", + "text-3xl sm:text-4xl font-bold mb-3", + "text-gray-200 mb-6 leading-relaxed", + "px-8 py-3 bg-yellow-400 text-gray-900 font-bold rounded-full hover:bg-yellow-300 transition-colors" + ], + "cmsCollection": "campaigns" + }, + { + "name": "UmuziGallerySection", + "importPath": "@/components/sections/UmuziGallerySection", + "position": 99, + "role": "gallery", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "Gallery" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "@/hooks/useVulaContent", + "gallery", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "umuzigallery", + "py-16 bg-white", + "max-w-6xl mx-auto px-4 sm:px-6 lg:px-8", + "text-center mb-10", + "text-3xl font-bold text-gray-900", + "Gallery", + "grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-4", + "group relative aspect-square rounded-xl overflow-hidden bg-gray-100", + "object-cover group-hover:scale-110 transition-transform duration-500", + "absolute inset-0 bg-black/50 opacity-0 group-hover:opacity-100 transition-opacity flex items-end p-3", + "text-white text-sm font-medium" + ], + "cmsCollection": "gallery" + }, + { + "name": "iKhayaCollectionsSection", + "importPath": "@/components/sections/iKhayaCollectionsSection", + "position": 99, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "{title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "@/hooks/useVulaContent", + "product_carousels", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "ikhayacollections", + "py-16 bg-white", + "max-w-6xl mx-auto px-4 sm:px-6 lg:px-8", + "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6", + "bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition-shadow border border-gray-100", + "relative h-48", + "object-cover", + "p-5", + "font-semibold text-gray-900 mb-2", + "text-gray-600 text-sm" + ], + "cmsCollection": "product_carousels" + } + ], + "navigationLinks": [ + "iKhaya Home", + "Home", + "Ikaya Story", + "i Khaya Offers", + "Umuzi Gallery", + "i Khaya Collections", + "Khuluma Nathi", + "Products", + "My Account" + ] +} \ No newline at end of file