From 63257a2f8c90b55d1ae80ce4eee9c963552f2897 Mon Sep 17 00:00:00 2001 From: Vula Builder Date: Mon, 27 Jul 2026 17:52:30 +0000 Subject: [PATCH] Deploy --- vula-index.json | 674 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 vula-index.json diff --git a/vula-index.json b/vula-index.json new file mode 100644 index 0000000..98ba62a --- /dev/null +++ b/vula-index.json @@ -0,0 +1,674 @@ +{ + "projectName": "Mzansi Wear", + "businessType": "", + "industry": "", + "tone": "", + "tier": 3, + "generatedAt": "2026-07-27T17:51:15.733Z", + "sections": [ + { + "name": "SowetoHeroSection", + "importPath": "@/components/sections/SowetoHeroSection", + "position": 0, + "role": "hero", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "flex-row", + "headings": [], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "@/hooks/useVulaContent", + "next/image", + "@/components/ui/Button", + "hero_banners", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "hero", + "sowetohero", + "relative min-h-[90vh] flex overflow-hidden", + "w-1/2 bg-[#18181b] flex items-center justify-center p-12", + "max-w-lg text-left", + "font-['Archivo_Black'] uppercase text-6xl lg:text-7xl leading-tight text-white", + "FROM THE TOWNSHIP", + "text-[#dc2626] block", + "TO THE WORLD", + "mt-6 text-lg text-white/80 uppercase tracking-widest", + "default", + "lg", + "mt-8 bg-[#dc2626] hover:bg-[#b02020] text-white border-2 border-white shadow-[6px_6px_0_0_#d4af37] transition-all duration-200 ease-out", + "w-1/2 bg-[#dc2626] relative", + "absolute inset-0", + "Hero banner", + "50vw", + "object-cover opacity-70", + "absolute bottom-0 left-0 right-0 h-2 bg-[#d4af37]" + ], + "cmsCollection": "hero_banners" + }, + { + "name": "FeaturedProductsSection", + "importPath": "@/components/sections/FeaturedProductsSection", + "position": 1, + "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": "AdvertBannerSection", + "importPath": "@/components/sections/AdvertBannerSection", + "position": 2, + "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": "LimitedDropCampaignSection", + "importPath": "@/components/sections/LimitedDropCampaignSection", + "position": 3, + "role": "cms-campaigns", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "Limited Drops", + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "@/hooks/useVulaContent", + "@/components/ui/Button", + "@/components/ui/Card", + "@/components/ui/Badge", + "lucide-react", + "next/image", + "campaigns", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-[#18181b] border-t-transparent animate-spin", + "drops", + "limiteddropcampaign", + "py-20 bg-[#18181b] text-white", + "max-w-7xl mx-auto px-4", + "flex items-center gap-3 mb-10", + "w-6 h-6 text-[#d4af37]", + "text-4xl md:text-5xl font-black uppercase tracking-tight", + "Limited Drops", + "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8", + "border-2 border-[#d4af37] shadow-[8px_8px_0_0_#d4af37] bg-white text-[#101418] rounded-none overflow-hidden", + "relative h-48 w-full", + "object-cover", + "(max-width: 768px) 100vw, 50vw", + "p-6 space-y-3", + "accent", + "sm", + "uppercase tracking-wider", + "Just Dropped", + "text-2xl font-black uppercase", + "text-sm uppercase tracking-wide", + "text-sm text-gray-600", + "pt-3", + "default", + "uppercase text-sm tracking-widest bg-[#dc2626] hover:bg-[#b91c1c] shadow-[4px_4px_0_0_#18181b]", + "Shop Now", + "w-4 h-4 ml-2" + ], + "cmsCollection": "campaigns" + }, + { + "name": "MzansiFeaturedSection", + "importPath": "@/components/sections/MzansiFeaturedSection", + "position": 4, + "role": "services", + "hasImage": true, + "hasForm": false, + "itemCount": 10, + "layout": "grid", + "headings": [ + "MZANSI FEATURED", + "{product.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "@/hooks/useMedusaProducts", + "@/hooks/useMedusaCart", + "next/link", + "next/image", + "@/components/ui/Button", + "@/components/ui/Badge", + "@/components/ui/Card", + "mzansifeatured", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "KSh", + "cart-drawer-open", + "featured-products", + "py-20 bg-white", + "container mx-auto px-4", + "text-center mb-14", + "font-['Archivo_Black'] uppercase text-4xl lg:text-5xl text-[#18181b]", + "MZANSI FEATURED", + "mt-3 text-lg text-[#101418]/70 uppercase tracking-wide", + "8 exclusive drops — limited stock, serious style", + "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6", + "group border-2 border-[#18181b] rounded-none shadow-[6px_6px_0_0_#18181b] hover:shadow-[8px_8px_0_0_#dc2626] transition-all duration-200 ease-out cursor-pointer", + "block", + "relative aspect-square overflow-hidden", + "(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 25vw", + "object-cover transition-transform duration-500 ease-out group-hover:scale-105", + "absolute top-2 left-2 z-10", + "accent", + "sm", + "bg-[#dc2626] text-white border-0 uppercase text-xs", + "Limited Drop", + "p-4", + "font-bold text-lg uppercase text-[#18181b]", + "text-2xl font-extrabold text-[#dc2626] mt-1", + "p-4 pt-0", + "default", + "w-full bg-[#18181b] text-white border-2 border-[#18181b] hover:bg-[#dc2626] hover:border-[#dc2626] shadow-[3px_3px_0_0_#d4af37] transition-all duration-200 ease-out", + "Add to Cart" + ] + }, + { + "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", + "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": "BrandCarouselSection", + "importPath": "@/components/sections/BrandCarouselSection", + "position": 6, + "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": "MostPopularSection", + "importPath": "@/components/sections/MostPopularSection", + "position": 7, + "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": "SowetoLookbookSection", + "importPath": "@/components/sections/SowetoLookbookSection", + "position": 8, + "role": "gallery", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "flex-row", + "headings": [ + "Soweto Lookbook", + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "@/hooks/useVulaContent", + "next/image", + "gallery", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-[#18181b] border-t-transparent animate-spin", + "lookbook", + "sowetolookbook", + "py-20 bg-white text-[#101418]", + "max-w-7xl mx-auto px-4", + "text-4xl md:text-5xl font-black uppercase tracking-tight text-center mb-12", + "Soweto Lookbook", + "columns-2 md:columns-3 gap-4 space-y-4", + "break-inside-avoid border-2 border-[#18181b] shadow-[6px_6px_0_0_#18181b] rounded-none overflow-hidden bg-white", + "relative w-full", + "200px", + "object-cover", + "(max-width: 768px) 100vw, 50vw", + "p-4", + "text-lg font-black uppercase", + "text-sm text-gray-600 uppercase tracking-wide" + ], + "cmsCollection": "gallery" + }, + { + "name": "FreshThreadsSection", + "importPath": "@/components/sections/FreshThreadsSection", + "position": 9, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": 8, + "layout": "grid", + "headings": [ + "Fresh Threads", + "{product.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "@/hooks/useMedusaProducts", + "@/hooks/useMedusaCart", + "@/components/ui/Card", + "@/components/ui/Button", + "@/components/ui/Badge", + "lucide-react", + "next/image", + "next/link", + "KSh", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-[#dc2626] border-t-transparent animate-spin", + "cart-drawer-open", + "freshthreads", + "new-arrivals", + "py-20 bg-white text-[#101418]", + "max-w-7xl mx-auto px-4", + "text-4xl md:text-5xl font-black uppercase tracking-tight text-center mb-12", + "Fresh Threads", + "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6", + "border-2 border-[#18181b] shadow-[6px_6px_0_0_#18181b] rounded-none group", + "block relative h-56 w-full overflow-hidden", + "object-cover group-hover:scale-105 transition-transform duration-500 ease-out", + "(max-width: 768px) 100vw, 25vw", + "w-full h-full bg-gray-100 flex items-center justify-center", + "w-10 h-10 text-gray-400", + "accent", + "sm", + "absolute top-3 left-3 uppercase tracking-wider shadow-[2px_2px_0_0_#18181b]", + "Just Dropped", + "p-4 space-y-2", + "text-base font-black uppercase truncate", + "text-lg font-black text-[#dc2626]", + "flex gap-2 pt-2", + "default", + "flex-1 uppercase text-xs tracking-widest bg-[#18181b] hover:bg-black shadow-[3px_3px_0_0_#d4af37]", + "w-4 h-4 mr-1", + "Add", + "outline", + "uppercase text-xs tracking-wider border-2 border-[#18181b] shadow-[3px_3px_0_0_#18181b]", + "w-4 h-4" + ] + }, + { + "name": "KasiLoveSection", + "importPath": "@/components/sections/KasiLoveSection", + "position": 10, + "role": "blog", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "Kasi Love", + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "@/hooks/useVulaContent", + "@/components/ui/Card", + "lucide-react", + "next/image", + "posts", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-[#d4af37] border-t-transparent animate-spin", + "kasi-love", + "kasilove", + "py-20 bg-[#d4af37] text-[#101418]", + "max-w-7xl mx-auto px-4", + "flex items-center gap-3 mb-10", + "w-6 h-6 text-[#dc2626]", + "text-4xl md:text-5xl font-black uppercase tracking-tight", + "Kasi Love", + "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6", + "border-2 border-[#18181b] shadow-[6px_6px_0_0_#18181b] rounded-none bg-white", + "relative h-40 w-full", + "object-cover", + "(max-width: 768px) 100vw, 33vw", + "p-5 space-y-2", + "flex items-center gap-2 text-xs uppercase tracking-wider text-[#dc2626]", + "w-3 h-3", + "Community", + "text-lg font-black uppercase", + "text-sm text-gray-600", + "text-xs font-semibold uppercase tracking-wide text-[#d4af37]" + ], + "cmsCollection": "posts" + }, + { + "name": "ShopTheVibeSection", + "importPath": "@/components/sections/ShopTheVibeSection", + "position": 11, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": 3, + "layout": "unknown", + "headings": [], + "buttonLabels": [], + "people": [], + "allText": [ + "next/link", + "@/components/ui/Button", + "lucide-react", + "shopthevibe", + "shop-vibe", + "relative overflow-hidden bg-[#18181b] text-white py-24 lg:py-32", + "absolute inset-0", + "African print fabric pattern", + "w-full h-full object-cover opacity-30", + "absolute inset-0 bg-gradient-to-r from-[#18181b]/80 to-[#18181b]/50", + "relative z-10 container mx-auto px-6 text-center", + "text-4xl md:text-6xl lg:text-7xl font-black uppercase tracking-tight mb-4", + "block", + "Your Style", + "block text-[#d4af37] -webkit-text-stroke-1", + "Your Roots", + "text-lg md:text-xl text-white/80 max-w-2xl mx-auto mb-8 leading-relaxed", + "Limited drops of authentic African-print streetwear — crafted in Soweto, worn worldwide.", + "lg", + "bg-[#d4af37] hover:bg-[#b8962e] text-[#18181b] font-bold text-lg px-10 py-4 rounded-none border-2 border-[#d4af37] hover:border-white transition-all duration-200", + "Shop All Streetwear", + "ml-2 w-5 h-5" + ] + }, + { + "name": "SowetoRootsSection", + "importPath": "@/components/sections/SowetoRootsSection", + "position": 12, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": 9, + "layout": "grid", + "headings": [ + "SOWETO ROOTS" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "next/image", + "sowetoroots", + "our-story", + "py-20 bg-[#18181b] text-white", + "container mx-auto px-4", + "grid grid-cols-1 lg:grid-cols-2 gap-10 items-center", + "space-y-6", + "font-['Archivo_Black'] uppercase text-4xl lg:text-5xl leading-tight", + "SOWETO ROOTS", + "text-lg text-white/80 leading-relaxed", + "Mzansi Wear was born in the heart of Soweto, where street corners pulse with creativity and the rhythm of the township shapes every stitch. Our founder, Thabo Mokoena, learned the craft of African-print tailoring from his grandmother in Orlando West. Each hoodie, cap, and tee carries the story of a community that refuses to be ignored.", + "text-white/70", + "We blend traditional Shweshwe and Ankara fabrics with modern streetwear silhouettes — because heritage isn't old, it's now.", + "pt-4 border-t-2 border-[#d4af37]", + "italic text-[#d4af37]", + "\"Our prints are a declaration. We wear our roots on our sleeves, literally.\"", + "text-sm text-white/60 mt-2", + "— Thabo Mokoena, Founder", + "relative h-[500px] lg:h-[600px]", + "absolute top-0 left-0 w-3/4 h-3/4 z-10 border-2 border-white shadow-[8px_8px_0_0_#dc2626]", + "Soweto streetscape", + "(max-width: 1024px) 75vw, 37.5vw", + "object-cover", + "absolute bottom-0 right-0 w-2/3 h-2/3 border-2 border-white shadow-[-6px_6px_0_0_#d4af37]", + "African print fabric detail", + "(max-width: 1024px) 66vw, 33vw", + "mt-20 border-y-2 border-white bg-[#dc2626] py-4 overflow-hidden", + "flex gap-12 uppercase tracking-widest text-white text-xl font-bold whitespace-nowrap animate-marquee", + "Rooted in Soweto", + "African Prints", + "Limited drops", + "Street culture", + "Proudly Mzansi" + ] + }, + { + "name": "SowetoConnectSection", + "importPath": "@/components/sections/SowetoConnectSection", + "position": 13, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "Soweto Connect", + "Opening Hours", + "Rooted in Soweto", + "Get in Touch" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "@/hooks/useVulaContent", + "lucide-react", + "next/image", + "business_hours", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-[#d4af37] border-t-transparent animate-spin", + "contact", + "sowetoconnect", + "bg-white py-20 px-6 border-t border-[#e7eaef]", + "max-w-6xl mx-auto", + "text-3xl md:text-5xl font-black uppercase tracking-tight text-[#18181b] mb-4", + "Soweto Connect", + "text-lg text-gray-600 mb-12 max-w-2xl", + "Real brand. Real location. Real people. Reach us directly or come through — we serve from the heart of Soweto.", + "grid md:grid-cols-2 lg:grid-cols-3 gap-8", + "bg-gray-50 p-6 rounded-lg border border-[#e7eaef]", + "flex items-center gap-2 mb-4", + "w-5 h-5 text-[#d4af37]", + "font-bold text-lg text-[#18181b]", + "Opening Hours", + "space-y-2", + "flex justify-between text-sm", + "font-medium text-gray-800", + "text-red-500", + "text-gray-600", + "Closed", + "mt-3 text-xs text-gray-500 italic", + "bg-gray-50 p-6 rounded-lg border border-[#e7eaef] col-span-1 lg:col-span-1", + "Rooted in Soweto", + "relative w-full h-40 rounded overflow-hidden", + "Soweto township view", + "(max-width: 768px) 100vw, 50vw", + "object-cover", + "mt-3 text-sm text-gray-600", + "Based in Orlando East, Soweto — every drop is packed from our community studio.", + "Get in Touch", + "space-y-3", + "_blank", + "noopener noreferrer", + "flex items-center gap-2 text-sm text-gray-700 hover:text-[#d4af37] transition-colors duration-200", + "w-4 h-4 text-green-600", + "WhatsApp Us", + "tel:+27761234567", + "w-4 h-4", + "+27 76 123 4567", + "mailto:hello@mzansiwear.co.za", + "hello@mzansiwear.co.za", + "mt-6 pt-4 border-t border-[#e7eaef]", + "flex items-center gap-2 mb-2" + ], + "cmsCollection": "business_hours" + } + ], + "navigationLinks": [ + "Mzansi Wear", + "Home", + "Mzansi Featured", + "Soweto Roots", + "Limited Drop Campaign", + "Soweto Lookbook", + "Soweto Connect", + "Products" + ] +} \ No newline at end of file