diff --git a/vula-index.json b/vula-index.json new file mode 100644 index 0000000..e48e987 --- /dev/null +++ b/vula-index.json @@ -0,0 +1,607 @@ +{ + "projectName": "Mzansi Style", + "businessType": "", + "industry": "", + "tone": "", + "tier": 3, + "generatedAt": "2026-07-27T18:34:11.643Z", + "sections": [ + { + "name": "HeroSection", + "importPath": "@/components/sections/HeroSection", + "position": 0, + "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", + "hero", + "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": "BrandStorySection", + "importPath": "@/components/sections/BrandStorySection", + "position": 1, + "role": "about", + "hasImage": true, + "hasForm": false, + "itemCount": 4, + "layout": "grid", + "headings": [], + "buttonLabels": [ + "Read Our Story" + ], + "people": [], + "allText": [ + "@/components/ui/Button", + "next/image", + "next/link", + "brandstory", + "brand-story", + "bg-[#18181b] py-20 px-4", + "container mx-auto max-w-7xl", + "grid grid-cols-1 lg:grid-cols-2 gap-12 items-center", + "relative aspect-[4/5] overflow-hidden border-2 border-[#d4af37] shadow-[8px_8px_0_0_#d4af37]", + "Soweto creative in Mzansi Style gear", + "(max-width: 1024px) 100vw, 50vw", + "object-cover", + "space-y-6", + "font-['Archivo_Black'] uppercase text-5xl sm:text-6xl text-white leading-tight", + "Born in", + "text-[#d4af37]", + "Soweto", + "Worn by the", + "text-[#dc2626]", + "World", + "text-gray-300 text-base sm:text-lg leading-relaxed max-w-xl", + "Mzansi Style fuses traditional Shweshwe motifs with raw, modern streetwear. We celebrate the energy of urban youth culture — from Soweto to Sandton to Brooklyn. Every hoodie, cap, and tee is cut from limited runs, stitched with African pride, and built for those who move with confidence.", + "outline", + "lg", + "border-2 border-[#d4af37] text-[#d4af37] hover:bg-[#d4af37] hover:text-[#18181b] transition-all duration-200 ease-out uppercase tracking-widest", + "Read Our Story" + ] + }, + { + "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/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": "NewArrivalsSection", + "importPath": "@/components/sections/NewArrivalsSection", + "position": 3, + "role": "unknown", + "hasImage": false, + "hasForm": false, + "itemCount": 8, + "layout": "grid", + "headings": [ + "Fresh Off the Block: New Threads", + "{product.title}" + ], + "buttonLabels": [ + "Shop Now" + ], + "people": [], + "allText": [ + "use client", + "@/hooks/useMedusaProducts", + "next/link", + "@/components/ui/Card", + "@/components/ui/Badge", + "@/components/ui/Button", + "lucide-react", + "KSh", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-[#18181b] border-t-transparent animate-spin", + "new-arrivals", + "py-16 bg-white border-t-[3px] border-[#18181b]", + "container mx-auto px-4", + "text-4xl font-black uppercase tracking-tight text-[#18181b] mb-2", + "Archivo Black, sans-serif", + "0.5px currentColor", + "Fresh Off the Block: New Threads", + "text-[#18181b]/70 uppercase tracking-widest text-sm mb-8", + "Limited edition drops — grab yours before they vanish", + "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6", + "group relative overflow-hidden border-[3px] border-[#18181b] shadow-[6px_6px_0_0_#18181b] bg-white transition-all duration-200 ease-out hover:shadow-[3px_3px_0_0_#dc2626] hover:-translate-x-[3px] hover:-translate-y-[3px]", + "relative aspect-[4/3] overflow-hidden", + "object-cover w-full h-full group-hover:scale-105 transition-transform duration-500 ease-out", + "accent", + "absolute top-2 left-2 uppercase font-bold text-xs", + "Just Landed", + "p-4", + "font-bold text-lg text-[#18181b] uppercase", + "text-[#dc2626] font-black text-xl mt-1", + "px-4 pb-4 pt-0 flex gap-2", + "ghost", + "sm", + "text-[#18181b] hover:text-[#dc2626] flex items-center gap-1", + "w-4 h-4", + "Quick View", + "default", + "bg-[#18181b] text-white uppercase", + "Shop Now" + ] + }, + { + "name": "MostPopularSection", + "importPath": "@/components/sections/MostPopularSection", + "position": 4, + "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": 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": "CampaignsSection", + "importPath": "@/components/sections/CampaignsSection", + "position": 7, + "role": "cms-campaigns", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "Drop Campaigns", + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "@/hooks/useVulaContent", + "@/components/ui/Card", + "@/components/ui/Button", + "next/link", + "next/image", + "campaigns", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-[#d4af37] border-t-transparent animate-spin", + "py-16 bg-[#18181b] text-white border-t-[3px] border-[#d4af37]", + "container mx-auto px-4", + "text-4xl font-black uppercase tracking-tight text-[#d4af37] mb-8", + "Archivo Black, sans-serif", + "0.5px #d4af37", + "Drop Campaigns", + "grid grid-cols-1 md:grid-cols-2 gap-8", + "relative overflow-hidden border-[3px] border-[#d4af37] shadow-[6px_6px_0_0_#d4af37] bg-[#18181b] group transition-all duration-200 ease-out hover:shadow-[3px_3px_0_0_#dc2626] hover:-translate-x-[3px] hover:-translate-y-[3px]", + "relative h-64 overflow-hidden", + "Campaign", + "(max-width: 768px) 100vw, 50vw", + "object-cover group-hover:scale-105 transition-transform duration-500 ease-out", + "absolute inset-0 bg-gradient-to-t from-[#18181b] via-transparent to-transparent", + "p-6", + "text-2xl font-black uppercase text-[#d4af37]", + "text-xl font-bold uppercase mt-1", + "text-sm mt-2 text-gray-300 line-clamp-3", + "mt-4", + "default", + "md", + "bg-[#d4af37] text-[#18181b] hover:bg-[#dc2626] hover:text-white uppercase font-bold border-[2px] border-[#d4af37] shadow-[3px_3px_0_0_#dc2626]", + "Shop the Look" + ], + "cmsCollection": "campaigns" + }, + { + "name": "GallerySection", + "importPath": "@/components/sections/GallerySection", + "position": 8, + "role": "gallery", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "#MzansiSwag", + "{items[selected].data?.title}" + ], + "buttonLabels": [], + "people": [ + "Mzansi Swag" + ], + "allText": [ + "use client", + "@/hooks/useVulaContent", + "next/image", + "@/components/ui/Card", + "react", + "@/components/ui/Modal", + "lucide-react", + "gallery", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-[#dc2626] border-t-transparent animate-spin", + "py-16 bg-white border-t-[3px] border-[#dc2626]", + "container mx-auto px-4", + "text-4xl font-black uppercase tracking-tight text-[#18181b] mb-2", + "Archivo Black, sans-serif", + "0.5px currentColor", + "#MzansiSwag", + "text-[#18181b]/70 uppercase tracking-widest text-sm mb-8", + "Real people, real fits — tag us to be featured", + "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-3", + "relative group cursor-pointer overflow-hidden border-[3px] border-[#18181b] shadow-[4px_4px_0_0_#18181b] transition-all duration-200 ease-out hover:shadow-[2px_2px_0_0_#dc2626] hover:-translate-x-[2px] hover:-translate-y-[2px]", + "relative aspect-square overflow-hidden", + "Gallery image", + "(max-width: 768px) 50vw, 25vw", + "object-cover group-hover:scale-105 transition-transform duration-500 ease-out", + "absolute inset-0 bg-gradient-to-t from-black/60 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-200 flex items-end p-2", + "text-white text-xs font-bold uppercase", + "Mzansi Swag", + "max-w-2xl", + "relative p-4", + "absolute top-2 right-2 z-10 bg-black/70 text-white p-1 rounded-full hover:bg-black", + "w-5 h-5", + "relative aspect-[4/3] w-full", + "100vw", + "object-contain", + "mt-4 text-center", + "font-black uppercase text-lg text-[#18181b]", + "text-sm text-gray-600 mt-1" + ], + "cmsCollection": "gallery" + }, + { + "name": "AdvertBannerSection", + "importPath": "@/components/sections/AdvertBannerSection", + "position": 9, + "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": "ShopCTASection", + "importPath": "@/components/sections/ShopCTASection", + "position": 10, + "role": "cta", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "flex-row", + "headings": [], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "react", + "@/hooks/useVulaContent", + "@/components/ui/Button", + "next/image", + "next/link", + "advert_banners", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "Rep Your Hood", + "Shop the Collection", + "Shop Now", + "shop-cta", + "shopcta", + "relative h-[80vh] min-h-[500px] overflow-hidden bg-[#18181b]", + "absolute inset-0", + "Crowd of township youth", + "100vw", + "object-cover opacity-50", + "absolute inset-0 bg-gradient-to-r from-[#18181b]/90 via-[#18181b]/50 to-transparent", + "relative z-10 flex items-center h-full max-w-7xl mx-auto px-6", + "max-w-lg", + "text-5xl md:text-7xl font-extrabold uppercase leading-tight text-[#d4af37] drop-shadow-md", + "text-white", + "mt-8 flex gap-4", + "default", + "lg", + "bg-[#d4af37] text-[#18181b] font-bold border-2 border-[#d4af37] shadow-[6px_6px_0_0_#18181b] hover:shadow-[4px_4px_0_0_#18181b] transition-all duration-200", + "text-white/70 mt-4 text-sm uppercase tracking-widest", + "Limited drops — get yours before they vanish" + ], + "cmsCollection": "advert_banners" + }, + { + "name": "LocationSection", + "importPath": "@/components/sections/LocationSection", + "position": 11, + "role": "unknown", + "hasImage": true, + "hasForm": false, + "itemCount": 7, + "layout": "grid", + "headings": [ + "Mzansi Style Soweto Hub" + ], + "buttonLabels": [ + "Find Us on Google Maps" + ], + "people": [], + "allText": [ + "use client", + "lucide-react", + "15 Vilakazi Street", + "Orlando West", + "Soweto", + "Gauteng", + "1804", + "+27 11 123 4567", + "info@mzansistyle.co.za", + "location", + "py-20 bg-white border-t-2 border-[#18181b]", + "max-w-7xl mx-auto px-4 grid md:grid-cols-2 gap-12 items-start", + "relative h-80 w-full border-2 border-[#18181b] shadow-[6px_6px_0_0_#18181b]", + "100%", + "lazy", + "no-referrer-when-downgrade", + "Mzansi Style Soweto Hub", + "space-y-6", + "text-4xl md:text-5xl font-extrabold uppercase tracking-tight text-[#18181b]", + "Come Through:", + "text-[#d4af37]", + "Our Kasi Hub", + "flex items-start gap-3", + "w-6 h-6 text-[#dc2626] mt-1", + "text-lg font-semibold text-[#18181b]", + "text-gray-600", + "space-y-2", + "text-sm text-gray-500", + "font-semibold", + "Phone:", + "Email:", + "_blank", + "noopener noreferrer", + "inline-block bg-[#d4af37] text-[#18181b] font-bold px-6 py-3 border-2 border-[#18181b] shadow-[4px_4px_0_0_#18181b] hover:shadow-[2px_2px_0_0_#18181b] transition-all duration-200 uppercase", + "Find Us on Google Maps", + "pt-4 border-t border-gray-200", + "text-sm text-gray-600", + "font-bold text-[#dc2626]", + "Wholesale / Collab?", + "Hit us up at", + "underline text-[#18181b]" + ] + }, + { + "name": "NewsletterSection", + "importPath": "@/components/sections/NewsletterSection", + "position": 12, + "role": "blog", + "hasImage": false, + "hasForm": true, + "itemCount": 2, + "layout": "flex-row", + "headings": [], + "buttonLabels": [ + "Sign Up" + ], + "people": [], + "allText": [ + "use client", + "react", + "@/components/ui/Button", + "@/components/ui/Input", + "newsletter", + "py-20 bg-[#18181b] border-t-2 border-[#d4af37]", + "max-w-3xl mx-auto px-4 text-center", + "text-4xl md:text-5xl font-extrabold uppercase tracking-tight text-[#d4af37]", + "Stay in the Loop,", + "text-white", + "Stay Stylish", + "mt-4 text-gray-400 text-lg", + "Early drop alerts, behind-the-scenes, and exclusive access.", + "mt-8 text-[#d4af37] font-bold text-xl", + "🔥 You're in! Check your inbox for the first drop.", + "mt-8 flex flex-col sm:flex-row gap-4 justify-center", + "flex-1 max-w-sm mx-auto sm:mx-0", + "email", + "your@email.co.za", + "w-full border-2 border-[#d4af37] bg-transparent text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-[#d4af37] px-4 py-3", + "submit", + "default", + "lg", + "bg-[#d4af37] text-[#18181b] font-bold border-2 border-[#d4af37] shadow-[4px_4px_0_0_#18181b] hover:shadow-[2px_2px_0_0_#18181b] transition-all duration-200 uppercase", + "Sign Up", + "mt-4 text-sm text-gray-500 italic", + "No spam, just fresh fits." + ] + } + ], + "navigationLinks": [ + "Mzansi Style", + "Home", + "Brand Story", + "New Arrivals", + "Campaigns", + "Gallery", + "Location", + "Products" + ] +} \ No newline at end of file