Files
Vula Builder e1530e1b64 Deploy
2026-07-27 18:34:50 +00:00

607 lines
22 KiB
JSON

{
"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"
]
}