This commit is contained in:
Vula Builder
2026-07-28 13:27:21 +00:00
parent 8fdb5bcbd4
commit b6872a62ef
+677
View File
@@ -0,0 +1,677 @@
{
"projectName": "Vault by Mkhize",
"businessType": "",
"industry": "",
"tone": "",
"tier": 3,
"generatedAt": "2026-07-28T13:23:26.422Z",
"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": "LatestDropsSection",
"importPath": "@/components/sections/LatestDropsSection",
"position": 1,
"role": "unknown",
"hasImage": true,
"hasForm": false,
"itemCount": 10,
"layout": "grid",
"headings": [],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useMedusaProducts",
"@/hooks/useMedusaCart",
"@/components/ui/Card",
"@/components/ui/Button",
"@/components/ui/Badge",
"next/image",
"next/link",
"latestdrops",
"latest-drops",
"flex justify-center py-24 bg-[#0f0f17]",
"w-8 h-8 rounded-full border-2 border-[#c0c0c0] border-t-transparent animate-spin",
"py-24 px-6 bg-[#0f0f17]",
"max-w-7xl mx-auto",
"flex items-center justify-center gap-4 mb-10",
"block w-14 h-0.5 bg-[#c0c0c0]",
"text-3xl md:text-4xl font-light text-[#e7e7ee] font-['Cormorant_Garamond'] uppercase tracking-wider",
"Latest",
"italic text-[#c0c0c0]",
"Drops",
"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6",
"Price on request",
"bg-[#18181b] border border-[#303040] hover:border-[#c0c0c0] transition-all duration-200 ease-out",
"block",
"aspect-square overflow-hidden",
"object-cover w-full h-full hover:scale-105 transition-transform duration-500 ease-out",
"p-4 pb-0",
"text-[#e7e7ee] font-['Cormorant_Garamond'] text-xl",
"p-4 pt-2",
"text-[#c0c0c0] font-semibold",
"p-4 pt-0",
"outline",
"sm",
"w-full border-[#c0c0c0] text-[#c0c0c0] hover:bg-[#c0c0c0] hover:text-[#0f0f17]",
"cart-drawer-open",
"Add to Cart"
]
},
{
"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": "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/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": 4,
"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": "FeaturedCollectionsSection",
"importPath": "@/components/sections/FeaturedCollectionsSection",
"position": 5,
"role": "services",
"hasImage": true,
"hasForm": false,
"itemCount": 10,
"layout": "grid",
"headings": [],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useMedusaProducts",
"@/hooks/useMedusaCart",
"@/components/ui/Card",
"@/components/ui/Button",
"@/components/ui/Badge",
"next/image",
"next/link",
"featuredcollections",
"featured-collections",
"flex justify-center py-24 bg-[#18181b]",
"w-8 h-8 rounded-full border-2 border-[#c0c0c0] border-t-transparent animate-spin",
"py-24 px-6 bg-[#18181b]",
"max-w-7xl mx-auto",
"flex items-center justify-center gap-4 mb-12",
"block w-14 h-0.5 bg-[#c0c0c0]",
"text-3xl md:text-4xl font-light text-[#e7e7ee] font-['Cormorant_Garamond'] uppercase tracking-wider",
"Featured",
"italic text-[#c0c0c0]",
"Collections",
"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6",
"Price on request",
"bg-[#0f0f17] border border-[#303040] hover:border-[#c0c0c0] transition-all duration-200 ease-out",
"block",
"aspect-square overflow-hidden",
"object-cover w-full h-full hover:scale-105 transition-transform duration-500 ease-out",
"p-4 pb-0",
"text-[#e7e7ee] font-['Cormorant_Garamond'] text-lg",
"p-4 pt-2",
"text-[#c0c0c0] font-semibold",
"p-4 pt-0",
"outline",
"sm",
"w-full border-[#c0c0c0] text-[#c0c0c0] hover:bg-[#c0c0c0] hover:text-[#0f0f17]",
"cart-drawer-open",
"Add to Cart"
]
},
{
"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": "AdvertBannerSection",
"importPath": "@/components/sections/AdvertBannerSection",
"position": 7,
"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": "AboutVaultSection",
"importPath": "@/components/sections/AboutVaultSection",
"position": 8,
"role": "about",
"hasImage": true,
"hasForm": false,
"itemCount": 10,
"layout": "grid",
"headings": [],
"buttonLabels": [],
"people": [],
"allText": [
"next/image",
"aboutvault",
"about-vault",
"py-24 px-6 bg-[#0f0f17]",
"max-w-6xl mx-auto grid grid-cols-1 lg:grid-cols-2 gap-12 items-center",
"relative h-[400px] lg:h-[500px] overflow-hidden rounded-sm border border-[#303040]",
"Vault by Mkhize boutique interior, Johannesburg",
"(max-width: 768px) 100vw, 50vw",
"object-cover",
"absolute inset-0 bg-gradient-to-t from-[#0f0f17]/70 to-transparent",
"text-left",
"flex items-center gap-4 mb-6",
"block w-14 h-0.5 bg-[#c0c0c0]",
"text-[#c0c0c0] tracking-[0.2em] uppercase text-xs font-medium",
"Our Origin",
"text-4xl md:text-5xl font-light text-[#e7e7ee] font-['Cormorant_Garamond'] leading-tight mb-8",
"Curating",
"italic text-[#c0c0c0]",
"exclusivity",
"since 2020",
"space-y-4 text-[#e7e7ee]/70 text-base leading-relaxed",
"Vault by Mkhize was born in the heart of Sandton — a response to Johannesburg's hunger for\n sneakers that tell a story. We don't just sell shoes; we curate cultural artifacts from the\n world's most coveted labels: Nike, Adidas, and exclusive South African collaborations.",
"Every pair that enters our vault undergoes rigorous authentication by a team with over a decade\n of experience. We partner directly with global brands and local creatives to secure limited runs\n that never see the mass market. Our Rosebank showroom is an invitation to experience the craft.",
"For the collector who demands more than hype — who seeks provenance, rarity, and the quiet\n confidence of owning something few will ever see — Vault by Mkhize is your sanctuary.",
"mt-10 grid grid-cols-3 gap-6 text-center",
"text-2xl font-bold text-[#c0c0c0]",
"500+",
"text-xs text-[#e7e7ee]/50 uppercase tracking-wider",
"Curated releases",
"100%",
"Authenticity guaranteed",
"#1",
"SA luxury sneaker destination"
]
},
{
"name": "CampaignsSection",
"importPath": "@/components/sections/CampaignsSection",
"position": 9,
"role": "cms-campaigns",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"Campaigns"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"@/components/ui/Card",
"@/components/ui/Button",
"@/components/ui/Badge",
"next/image",
"campaigns",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
"py-24 bg-[#0f0f17]",
"container mx-auto px-4",
"text-3xl font-light text-[#e7e7ee] tracking-wide uppercase text-center mb-12",
"Campaigns",
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
"bg-[#18181b] border border-[#303040]",
"relative aspect-video overflow-hidden rounded-t-lg",
"(max-width: 768px) 100vw, 33vw",
"object-cover",
"accent",
"w-fit mb-2",
"text-[#e7e7ee] font-light",
"text-[#e7e7ee]/70 text-sm",
"outline",
"sm"
],
"cmsCollection": "campaigns"
},
{
"name": "GallerySection",
"importPath": "@/components/sections/GallerySection",
"position": 10,
"role": "gallery",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"Gallery",
"{d.title}"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"@/components/ui/Card",
"next/image",
"gallery",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
"py-24 bg-[#0f0f17]",
"container mx-auto px-4",
"text-3xl font-light text-[#e7e7ee] tracking-wide uppercase text-center mb-12",
"Gallery",
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
"bg-[#18181b] border border-[#303040] overflow-hidden group relative",
"relative aspect-square",
"(max-width: 768px) 100vw, 33vw",
"object-cover transition-transform duration-500 group-hover:scale-105",
"absolute inset-0 bg-gradient-to-t from-black/80 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-end p-4",
"text-white font-medium text-sm",
"text-white/70 text-xs mt-1"
],
"cmsCollection": "gallery"
},
{
"name": "JournalSection",
"importPath": "@/components/sections/JournalSection",
"position": 11,
"role": "blog",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"Journal"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"@/components/ui/Card",
"@/components/ui/Badge",
"next/image",
"posts",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin",
"journal",
"py-24 bg-[#0f0f17]",
"container mx-auto px-4",
"text-3xl font-light text-[#e7e7ee] tracking-wide uppercase text-center mb-12",
"Journal",
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
"bg-[#18181b] border border-[#303040] flex flex-col",
"relative aspect-video overflow-hidden rounded-t-lg",
"(max-width: 768px) 100vw, 33vw",
"object-cover",
"secondary",
"w-fit mb-2 text-xs",
"text-[#e7e7ee] font-light text-lg",
"flex-1",
"text-[#e7e7ee]/70 text-sm leading-relaxed",
"border-t border-[#303040] pt-3",
"text-[#c0c0c0] text-xs uppercase tracking-wider"
],
"cmsCollection": "posts"
},
{
"name": "AuthenticationGuaranteeSection",
"importPath": "@/components/sections/AuthenticationGuaranteeSection",
"position": 12,
"role": "unknown",
"hasImage": false,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"{d.title}"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"lucide-react",
"@/components/ui/Card",
"@/components/ui/Badge",
"policies",
"flex justify-center py-24",
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin text-[#c0c0c0]",
"authentication-guarantee",
"authenticationguarantee",
"bg-[#0f0f17] py-24 lg:py-32 px-4",
"max-w-6xl mx-auto",
"flex items-center gap-4 mb-12",
"h-px w-14 bg-[#c0c0c0]",
"accent",
"tracking-widest uppercase text-xs",
"Trust Guarantee",
"font-serif text-3xl lg:text-4xl text-[#e7e7ee] mb-16 max-w-3xl leading-tight",
"Every pair authenticated",
"italic text-[#c0c0c0]",
"before it reaches your door",
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8",
"bg-[#18181b] border border-[#303040] rounded-lg overflow-hidden",
"p-8",
"mb-6",
"w-8 h-8 text-[#c0c0c0]",
"text-xl font-semibold text-[#e7e7ee] mb-3 font-sans",
"text-[#a0a0b0] leading-relaxed text-sm",
"mt-16 flex flex-wrap gap-10 justify-center text-xs uppercase tracking-widest text-[#c0c0c0]",
"flex items-center gap-2",
"w-4 h-4",
"Verified by third-party experts",
"100% satisfaction guarantee",
"Free returns within 7 days"
],
"cmsCollection": "policies"
},
{
"name": "ShopTheVaultCTASection",
"importPath": "@/components/sections/ShopTheVaultCTASection",
"position": 13,
"role": "cta",
"hasImage": false,
"hasForm": false,
"itemCount": 1,
"layout": "single",
"headings": [],
"buttonLabels": [
"Enter The Vault"
],
"people": [],
"allText": [
"@/components/ui/Button",
"next/link",
"shop-the-vault",
"shopthevaultcta",
"bg-[#0f0f17] py-24 lg:py-32 px-4 border-t border-[#303040]",
"max-w-4xl mx-auto text-center",
"text-xs uppercase tracking-[0.2em] text-[#c0c0c0] mb-6",
"Sandton / Rosebank",
"font-serif text-3xl lg:text-5xl text-[#e7e7ee] leading-tight mb-8",
"Discover the rarest drops,",
"italic text-[#c0c0c0]",
"curated for you",
"text-[#a0a0b0] max-w-2xl mx-auto mb-10 text-sm leading-relaxed",
"Limited-edition Nike, Adidas, and exclusive SA collaborations.\n Each pair authenticated before it reaches your doorstep.",
"default",
"lg",
"bg-[#c0c0c0] text-[#0f0f17] hover:bg-[#d0d0d0] px-10 py-5 text-sm uppercase tracking-widest font-semibold",
"Enter The Vault"
]
},
{
"name": "ContactVaultSection",
"importPath": "@/components/sections/ContactVaultSection",
"position": 14,
"role": "contact",
"hasImage": false,
"hasForm": true,
"itemCount": -1,
"layout": "grid",
"headings": [
"Request a Private Appointment"
],
"buttonLabels": [
"Send Enquiry"
],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"react",
"lucide-react",
"@/components/ui/Input",
"@/components/ui/Button",
"@/components/ui/Card",
"business_hours",
"flex justify-center py-24",
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin text-[#c0c0c0]",
"Thank you for your enquiry. Our concierge will be in touch within 24 hours.",
"contact-vault",
"contactvault",
"bg-[#0f0f17] py-24 lg:py-32 px-4",
"max-w-6xl mx-auto",
"grid grid-cols-1 lg:grid-cols-2 gap-16",
"flex items-center gap-4 mb-8",
"h-px w-14 bg-[#c0c0c0]",
"font-sans text-xs uppercase tracking-[0.15em] text-[#c0c0c0]",
"Private Appointments",
"font-serif text-3xl lg:text-4xl text-[#e7e7ee] leading-tight mb-12",
"Visit Our",
"italic text-[#c0c0c0]",
"Sandton",
"Showroom",
"space-y-6 text-[#a0a0b0] text-sm",
"flex items-start gap-4",
"w-5 h-5 mt-0.5 text-[#c0c0c0]",
"text-[#e7e7ee] font-medium",
"Vault by Mkhize",
"5th Floor, Sandton City Mall",
"Sandton, Johannesburg, 2196",
"South Africa",
"+27 11 234 5678",
"text-xs mt-1",
"WhatsApp: +27 71 234 5678",
"concierge@vaultbymkhize.co.za",
"pt-6 border-t border-[#303040]",
"flex items-center gap-2 mb-4",
"w-5 h-5 text-[#c0c0c0]",
"text-[#e7e7ee] font-medium uppercase text-xs tracking-widest",
"Operating Hours",
"flex justify-between text-sm py-2 border-b border-[#303040]/50 last:border-none",
"text-[#e7e7ee]",
"text-[#a0a0b0]",
"Closed",
"text-xs text-[#707080] mt-4",
"Closed on South African public holidays.",
"bg-[#18181b] border border-[#303040] rounded-lg",
"p-8"
],
"cmsCollection": "business_hours"
}
],
"navigationLinks": [
"Vault by Mkhize",
"Home",
"Latest Drops",
"Featured Collections",
"About Vault",
"Gallery",
"Products"
]
}