This commit is contained in:
Vula Builder
2026-07-27 18:59:52 +00:00
parent 15739017c9
commit 6115fe3cf1
+597
View File
@@ -0,0 +1,597 @@
{
"projectName": "Jozi wear",
"businessType": "",
"industry": "",
"tone": "",
"tier": 3,
"generatedAt": "2026-07-27T18:59:09.476Z",
"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": "BrandCarouselSection",
"importPath": "@/components/sections/BrandCarouselSection",
"position": 1,
"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": "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": 7,
"layout": "grid",
"headings": [
"JUST LANDED",
"{product.title}"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useMedusaProducts",
"@/components/ui/Card",
"@/components/ui/Badge",
"next/link",
"KSh",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-[#ea580c] border-t-transparent animate-spin",
"new-arrivals",
"bg-[#18181b] py-20 px-4",
"max-w-7xl mx-auto",
"text-4xl md:text-5xl font-black uppercase tracking-tight text-white mb-2",
"JUST LANDED",
"text-[#ea580c] uppercase tracking-widest text-sm mb-10",
"Fresh drops from Soweto's finest",
"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6",
"group",
"bg-white border-2 border-[#18181b] shadow-[6px_6px_0_0_#ea580c] rounded-none overflow-hidden transition-all duration-200 ease-out hover:shadow-[8px_8px_0_0_#ea580c] hover:-translate-x-0.5 hover:-translate-y-0.5",
"aspect-square overflow-hidden",
"w-full h-full object-cover group-hover:scale-105 transition-transform duration-500 ease-out",
"p-4",
"text-lg font-bold text-[#18181b] uppercase tracking-wide",
"text-[#ea580c] font-semibold text-lg mt-1"
]
},
{
"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": "DropCampaignsSection",
"importPath": "@/components/sections/DropCampaignsSection",
"position": 6,
"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/Button",
"next/image",
"campaigns",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-[#ea580c] border-t-transparent animate-spin",
"drops",
"bg-white py-20 px-4",
"max-w-7xl mx-auto",
"text-4xl md:text-5xl font-black uppercase tracking-tight text-[#18181b] mb-2",
"DROP CAMPAIGNS",
"text-[#ea580c] uppercase tracking-widest text-sm mb-10",
"Limited drops — move before they vanish",
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
"bg-[#18181b] border-2 border-[#ea580c] shadow-[6px_6px_0_0_#16a34a] rounded-none overflow-hidden",
"relative h-56 overflow-hidden",
"Campaign image",
"(max-width: 768px) 100vw, 50vw",
"object-cover",
"absolute inset-0 bg-gradient-to-t from-[#18181b] to-transparent",
"p-6",
"text-2xl font-black uppercase text-white tracking-tight",
"text-[#ea580c] uppercase text-sm mt-1 font-bold",
"text-gray-300 mt-3 text-sm leading-relaxed",
"default",
"sm",
"mt-4 bg-[#ea580c] text-white border-2 border-[#18181b] shadow-[3px_3px_0_0_#16a34a] uppercase font-black"
],
"cmsCollection": "campaigns"
},
{
"name": "StreetStyleGallerySection",
"importPath": "@/components/sections/StreetStyleGallerySection",
"position": 7,
"role": "gallery",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "flex-row",
"headings": [
"STREET STYLE",
"{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-[#ea580c] border-t-transparent animate-spin",
"bg-[#18181b] py-20 px-4",
"max-w-7xl mx-auto",
"text-4xl md:text-5xl font-black uppercase tracking-tight text-white mb-2",
"STREET STYLE",
"text-[#ea580c] uppercase tracking-widest text-sm mb-10",
"From Vilakazi to the world",
"columns-1 sm:columns-2 lg:columns-3 gap-6 space-y-6",
"break-inside-avoid bg-white border-2 border-[#ea580c] shadow-[6px_6px_0_0_#16a34a] rounded-none overflow-hidden",
"relative",
"Gallery image",
"w-full h-auto object-cover",
"4/3",
"p-4",
"text-lg font-black uppercase text-[#18181b] tracking-tight",
"text-gray-600 text-sm mt-1"
],
"cmsCollection": "gallery"
},
{
"name": "OriginRootsSection",
"importPath": "@/components/sections/OriginRootsSection",
"position": 8,
"role": "blog",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [],
"buttonLabels": [
"Shop Collection"
],
"people": [
"Our Roots"
],
"allText": [
"use client",
"@/hooks/useVulaContent",
"next/image",
"@/components/ui/Button",
"next/link",
"posts",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
"our-story",
"originroots",
"bg-[#18181b] text-white py-20",
"max-w-7xl mx-auto px-4",
"grid grid-cols-1 lg:grid-cols-2 gap-12 items-center",
"relative h-[400px] lg:h-[550px] overflow-hidden border-[3px] border-[#ea580c] shadow-[8px_8px_0_0_#16a34a]",
"Our Roots",
"(max-width: 768px) 100vw, 50vw",
"object-cover",
"flex flex-col justify-center",
"text-[#16a34a] uppercase tracking-[0.2em] text-sm font-bold mb-2",
"text-4xl md:text-5xl font-black uppercase tracking-tighter leading-none mb-4",
"text-white",
"text-[#ea580c]",
"2px #ea580c",
"transparent",
"text-lg text-gray-300 uppercase tracking-wide mb-6",
"text-base text-gray-400 leading-relaxed mb-8",
"flex items-center gap-4 border-t-2 border-[#ea580c] pt-4",
"text-sm uppercase tracking-wider text-gray-300",
"By",
"text-white font-bold",
"outline",
"border-2 border-white text-white hover:bg-white hover:text-[#18181b] rounded-none uppercase tracking-widest text-xs shadow-[4px_4px_0_0_#16a34a] hover:shadow-[6px_6px_0_0_#ea580c] transition-all duration-200 ease-out",
"Shop Collection"
],
"cmsCollection": "posts"
},
{
"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": "RepTheStreetsSection",
"importPath": "@/components/sections/RepTheStreetsSection",
"position": 10,
"role": "blog",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"THE STREETS SPEAK"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"next/image",
"posts",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-[#ea580c] border-t-transparent animate-spin",
"rep-the-streets",
"bg-white py-20 px-4",
"max-w-7xl mx-auto",
"text-4xl md:text-5xl font-black uppercase tracking-tight text-[#18181b] mb-2",
"THE STREETS SPEAK",
"text-[#ea580c] uppercase tracking-widest text-sm mb-10",
"Real people. Real fit. Real talk.",
"grid grid-cols-1 md:grid-cols-3 gap-6",
"bg-[#18181b] border-2 border-[#ea580c] shadow-[6px_6px_0_0_#16a34a] rounded-none p-6",
"text-yellow-400 text-lg",
"text-gray-200 text-base italic mt-2 leading-relaxed",
"“",
"”",
"flex items-center gap-3 mt-5 pt-4 border-t border-[#ea580c]/40",
"w-12 h-12 rounded-full overflow-hidden border-2 border-[#ea580c]",
"Testimonial",
"object-cover w-full h-full",
"text-white font-bold uppercase text-sm",
"Street Fam",
"text-[#ea580c] text-xs uppercase tracking-wider"
],
"cmsCollection": "posts"
},
{
"name": "JoinTheHustleCTASection",
"importPath": "@/components/sections/JoinTheHustleCTASection",
"position": 11,
"role": "cta",
"hasImage": true,
"hasForm": true,
"itemCount": 4,
"layout": "grid",
"headings": [
"Claim Your Stripes"
],
"buttonLabels": [
"Shop the Drop",
"Get Early Access"
],
"people": [],
"allText": [
"use client",
"@/components/ui/Button",
"@/components/ui/Input",
"next/image",
"next/link",
"react",
"jointhehustlecta",
"shop-cta",
"bg-[#18181b] text-white py-20 px-6",
"max-w-6xl mx-auto grid grid-cols-1 md:grid-cols-2 gap-12 items-center",
"text-5xl font-bold uppercase leading-tight",
"Claim Your Stripes",
"mt-4 text-lg",
"Limited drops, bold African prints. Join the movement.",
"mt-8 flex flex-wrap gap-4 items-center",
"default",
"lg",
"bg-[#ea580c] hover:bg-[#d94d0a] border-2 border-[#ea580c] shadow-[4px_4px_0_0_#d4a017] transition-all duration-200",
"Shop the Drop",
"flex gap-2 items-center",
"email",
"Enter email",
"border-2 border-white bg-transparent text-white placeholder-gray-400",
"submit",
"outline",
"border-2 border-[#d4a017] text-[#d4a017] hover:bg-[#d4a017] hover:text-black shadow-[4px_4px_0_0_#d4a017] transition-all duration-200",
"Get Early Access",
"text-[#16a34a] text-lg font-semibold",
"You're in. Welcome to the movement.",
"relative h-64 md:h-80 overflow-hidden border-2 border-[#ea580c] shadow-[6px_6px_0_0_#d4a017]",
"Street style in Soweto",
"object-cover",
"(max-width: 768px) 100vw, 50vw"
]
},
{
"name": "ContactKhulumaSection",
"importPath": "@/components/sections/ContactKhulumaSection",
"position": 12,
"role": "contact",
"hasImage": true,
"hasForm": true,
"itemCount": -1,
"layout": "grid",
"headings": [
"Khuluma Nawe",
"Trading Hours"
],
"buttonLabels": [
"Send Message"
],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"@/components/ui/Button",
"@/components/ui/Input",
"lucide-react",
"next/image",
"next/link",
"react",
"business_hours",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
"Instagram",
"Facebook",
"WhatsApp",
"contact",
"contactkhuluma",
"py-20 bg-[#18181b] text-white",
"max-w-6xl mx-auto px-6 grid grid-cols-1 lg:grid-cols-2 gap-12",
"text-4xl font-bold uppercase tracking-tight",
"Khuluma Nawe",
"mt-2 text-lg text-gray-300",
"Reach out or come through to our Soweto spot.",
"mt-6 space-y-4",
"flex items-center gap-2 text-gray-300",
"w-5 h-5 text-[#ea580c]",
"123 Vilakazi Street, Orlando West, Soweto, 1804",
"+27 73 123 4567",
"info@joziwear.co.za",
"mt-8 space-y-4",
"name",
"Your name",
"bg-transparent border-2 border-[#ea580c] text-white placeholder-gray-400",
"email",
"Your email",
"message",
"Your message",
"w-full bg-transparent border-2 border-[#ea580c] text-white placeholder-gray-400 p-3 rounded-none focus:outline-none",
"submit",
"default",
"bg-[#ea580c] hover:bg-[#d94d0a] border-2 border-[#ea580c] shadow-[4px_4px_0_0_#d4a017] w-full",
"Send Message",
"mt-8 p-4 border-2 border-[#16a34a] text-[#16a34a]",
"font-semibold",
"Sizo thinta (We'll be in touch)!",
"mt-8 flex gap-4",
"_blank",
"noopener noreferrer",
"p-3 border-2 border-[#ea580c] hover:bg-[#ea580c] transition-colors duration-200",
"w-5 h-5",
"border-2 border-[#ea580c] p-6"
],
"cmsCollection": "business_hours"
}
],
"navigationLinks": [
"Jozi wear",
"Home",
"Featured Products",
"Origin Roots",
"New Arrivals",
"Drop Campaigns",
"Contact Khuluma",
"Products"
]
}