This commit is contained in:
Vula Builder
2026-07-29 19:04:13 +00:00
parent c09c7170bf
commit b1c00ce619
+634
View File
@@ -0,0 +1,634 @@
{
"projectName": "Diva",
"businessType": "",
"industry": "",
"tone": "",
"tier": 3,
"generatedAt": "2026-07-29T18:50:35.157Z",
"sections": [
{
"name": "HeroSection",
"importPath": "@/components/sections/HeroSection",
"position": 0,
"role": "hero",
"hasImage": true,
"hasForm": false,
"itemCount": 7,
"layout": "flex-row",
"headings": [],
"buttonLabels": [],
"people": [],
"allText": [
"next/image",
"next/link",
"hero",
"relative",
"#0077BE",
"hidden md:block min-h-[82vh] relative text-white",
"absolute inset-0",
"polygon(0 0, 85% 0, 65% 100%, 0 100%)",
"Diva",
"object-cover",
"100vw",
"absolute right-0 top-0 h-full w-[45%] flex flex-col justify-center px-10 lg:px-16",
"uppercase tracking-[0.24em] text-[12px] font-bold mb-4",
"text-4xl lg:text-5xl font-black uppercase tracking-[-0.01em] leading-[0.95] mb-6 max-w-4xl",
"Curated bold modern fashion for ambitious young South African women, bridging",
"text-transparent",
"2px currentColor",
"Cape Town.",
"text-base lg:text-lg text-white/75 mb-8 max-w-sm",
"Professional online fashion boutique in South Africa.",
"w-fit",
"inline-block border-[3px] border-current px-7 py-3.5 text-[14px] font-bold uppercase tracking-[0.06em] hover:-translate-x-0.5 hover:-translate-y-0.5 hover:shadow-[4px_4px_0_0_#FFD700] transition-all duration-150",
"Shop now",
"flex flex-col md:hidden text-white",
"relative h-72 w-full",
"px-8 py-10",
"text-3xl font-black uppercase tracking-[-0.01em] leading-[0.95] mb-6 max-w-4xl",
"text-base text-white/75 mb-6"
]
},
{
"name": "JustDroppedSection",
"importPath": "@/components/sections/JustDroppedSection",
"position": 1,
"role": "unknown",
"hasImage": true,
"hasForm": false,
"itemCount": 8,
"layout": "grid",
"headings": [
"Just Dropped"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useProducts",
"@/hooks/useVulaCart",
"next/image",
"next/link",
"@/components/ui/Button",
"lucide-react",
"cart-drawer-open",
"justdropped",
"just-dropped",
"py-16 bg-[#F0F8FF]",
"max-w-7xl mx-auto px-4",
"text-3xl font-bold text-[#1A2B3C] text-center mb-12 uppercase tracking-wide",
"Just Dropped",
"flex justify-center",
"w-8 h-8 animate-spin text-[#0077BE]",
"max-w-7xl mx-auto px-4 text-center",
"text-red-500",
"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6",
"rounded-xl overflow-hidden bg-white shadow-md hover:shadow-lg transition-shadow duration-200",
"block relative h-48 w-full",
"object-cover hover:scale-105 transition-transform duration-500 ease-out",
"(max-width: 768px) 100vw, 25vw",
"h-full w-full bg-gray-200 flex items-center justify-center",
"w-8 h-8 text-gray-400",
"p-5",
"font-semibold text-[#1A2B3C] truncate",
"hover:text-[#0077BE]",
"text-[#00A8CC] font-bold mt-1",
"R0.00",
"mt-3 w-full bg-[#0077BE] text-white hover:bg-[#005f9a] transition-all duration-200",
"default",
"w-4 h-4 mr-2",
"Quick Add"
]
},
{
"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/useVulaCart",
"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/useVulaCart",
"@/hooks/useProducts",
"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": "UrbanAmbitionSection",
"importPath": "@/components/sections/UrbanAmbitionSection",
"position": 4,
"role": "unknown",
"hasImage": true,
"hasForm": false,
"itemCount": 3,
"layout": "grid",
"headings": [
"From Cape Town Creative Hub to Urban Ambition"
],
"buttonLabels": [
"Explore the Collection"
],
"people": [],
"allText": [
"next/image",
"next/link",
"@/components/ui/Button",
"urbanambition",
"our-story",
"py-20 bg-[#F0F8FF]",
"max-w-7xl mx-auto px-4 grid md:grid-cols-2 gap-12 items-center",
"relative h-80 md:h-96 overflow-hidden rounded-xl shadow-md",
"Diva Cape Town creative studio",
"object-cover",
"(max-width: 768px) 100vw, 50vw",
"text-3xl font-bold text-[#1A2B3C] uppercase tracking-wide",
"From Cape Town Creative Hub to Urban Ambition",
"text-[#1A2B3C] mt-6 leading-relaxed",
"Diva was born in a small Cape Town design studio — a collective of bold creatives who\n believed fashion could do more than dress a body. It could amplify a woman's presence,\n bridge coastal artistry with Joburg ambition, and make every entrance unforgettable.",
"text-[#1A2B3C] mt-4 leading-relaxed",
"Today, Diva is the digital wardrobe of thousands of young professionals in Johannesburg.\n Each piece is a statement — cut to empower, styled to command. We source locally and\n design for the woman who walks into a room and owns it.",
"mt-8 bg-[#0077BE] text-white hover:bg-[#005f9a] font-semibold px-8 py-3 rounded-xl shadow-md",
"Explore the Collection"
]
},
{
"name": "StyleObsessionsCampaignSection",
"importPath": "@/components/sections/StyleObsessionsCampaignSection",
"position": 5,
"role": "cms-campaigns",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"Style Obsessions",
"{d.title}"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"@/components/ui/Button",
"next/image",
"@/components/ui/Card",
"campaigns",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-[#0077BE] border-t-transparent animate-spin",
"style-obsessions",
"py-20 bg-[#FFFFFF]",
"styleobsessionscampaign",
"max-w-7xl mx-auto px-4",
"text-3xl font-bold text-[#1A2B3C] mb-2",
"Style Obsessions",
"text-[#1A2B3C]/60 mb-10",
"Limited edition drops and seasonal edits.",
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
"rounded-xl overflow-hidden bg-white shadow-md",
"relative h-48 w-full overflow-hidden",
"(max-width: 768px) 100vw, 33vw",
"object-cover",
"p-5",
"uppercase text-xs tracking-widest text-[#00A8CC] mb-2",
"text-xl font-bold text-[#1A2B3C]",
"text-[#1A2B3C]/70 mt-2 text-sm line-clamp-3",
"default",
"sm",
"mt-4 bg-[#FFD700] text-black hover:bg-yellow-500"
],
"cmsCollection": "campaigns"
},
{
"name": "DivaLookbookSection",
"importPath": "@/components/sections/DivaLookbookSection",
"position": 6,
"role": "gallery",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"Diva Lookbook"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"next/image",
"gallery",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-[#0077BE] border-t-transparent animate-spin",
"lookbook",
"py-20 bg-[#F0F8FF]",
"divalookbook",
"max-w-7xl mx-auto px-4",
"text-3xl font-bold text-[#1A2B3C] mb-2",
"Diva Lookbook",
"text-[#1A2B3C]/60 mb-10",
"Real women, real style from Cape Town to Sandton.",
"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",
"rounded-xl overflow-hidden bg-white shadow-md group cursor-pointer",
"relative aspect-[3/4] overflow-hidden",
"(max-width: 768px) 50vw, 25vw",
"object-cover group-hover:scale-105 transition-transform duration-500",
"absolute inset-0 bg-gradient-to-t from-black/50 to-transparent opacity-0 group-hover:opacity-100 transition-opacity flex items-end p-4",
"text-white font-semibold text-sm",
"text-white/80 text-xs",
"aspect-[3/4] bg-gray-200 flex items-center justify-center text-gray-500",
"No image"
],
"cmsCollection": "gallery"
},
{
"name": "StyleDiariesSection",
"importPath": "@/components/sections/StyleDiariesSection",
"position": 7,
"role": "blog",
"hasImage": true,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"Style Diaries",
"{d.title}"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"next/image",
"@/components/ui/Card",
"@/components/ui/Badge",
"posts",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-[#0077BE] border-t-transparent animate-spin",
"style-diaries",
"py-20 bg-[#FFFFFF]",
"stylediaries",
"max-w-7xl mx-auto px-4",
"text-3xl font-bold text-[#1A2B3C] mb-2",
"Style Diaries",
"text-[#1A2B3C]/60 mb-10",
"Trend reports, how-to-wear guides, and behind-the-scenes stories.",
"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
"rounded-xl overflow-hidden bg-white shadow-md hover:shadow-lg transition-shadow",
"relative h-48 w-full overflow-hidden",
"(max-width: 768px) 100vw, 33vw",
"object-cover",
"h-48 bg-gray-200 flex items-center justify-center text-gray-500",
"No image",
"p-5",
"accent",
"mb-2 bg-[#00A8CC] text-white text-xs",
"font-bold text-lg text-[#1A2B3C]",
"text-[#1A2B3C]/70 text-sm mt-2 line-clamp-2",
"text-xs text-[#1A2B3C]/50 mt-3",
"By"
],
"cmsCollection": "posts"
},
{
"name": "BrandCarouselSection",
"importPath": "@/components/sections/BrandCarouselSection",
"position": 8,
"role": "partners",
"hasImage": false,
"hasForm": false,
"itemCount": 3,
"layout": "flex-row",
"headings": [
"Shop by Category"
],
"buttonLabels": [],
"people": [],
"allText": [
"next/link",
"py-10 px-4",
"max-w-7xl mx-auto",
"text-xl font-bold mb-5",
"Shop by Category",
"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 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": "ProductCarouselSection",
"importPath": "@/components/sections/ProductCarouselSection",
"position": 9,
"role": "services",
"hasImage": true,
"hasForm": false,
"itemCount": 4,
"layout": "flex-row",
"headings": [
"{section.title}"
],
"buttonLabels": [],
"people": [],
"allText": [
"next/image",
"next/link",
"@/lib/cms",
"KSh",
"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": "AdvertBannerSection",
"importPath": "@/components/sections/AdvertBannerSection",
"position": 10,
"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": "ShopNowCtaSection",
"importPath": "@/components/sections/ShopNowCtaSection",
"position": 11,
"role": "cta",
"hasImage": true,
"hasForm": false,
"itemCount": 4,
"layout": "grid",
"headings": [
"Your Next Favourite Outfit Awaits"
],
"buttonLabels": [
"Shop Now"
],
"people": [],
"allText": [
"use client",
"next/image",
"next/link",
"@/components/ui/Button",
"shopnowcta",
"shop-now",
"relative overflow-hidden bg-[#F0F8FF]",
"grid md:grid-cols-2 min-h-[60vh]",
"relative h-72 md:h-auto",
"Stylish outfit on a confident young woman",
"(max-width: 768px) 100vw, 50vw",
"object-cover",
"flex flex-col justify-center px-8 py-12 md:px-16 bg-[#0077BE] text-white",
"text-3xl md:text-4xl font-bold mb-4 leading-tight",
"Your Next Favourite Outfit Awaits",
"text-white/80 text-lg mb-6",
"Bold, modern fashion curated for the confident woman. Free delivery over R750, easy 14-day returns.",
"flex gap-4",
"lg",
"bg-[#FFD700] text-[#1A2B3C] hover:bg-[#e6c200] transition-all duration-200",
"Shop Now"
]
},
{
"name": "ShippingAndReturnsSection",
"importPath": "@/components/sections/ShippingAndReturnsSection",
"position": 12,
"role": "unknown",
"hasImage": false,
"hasForm": false,
"itemCount": -1,
"layout": "grid",
"headings": [
"Delivery & Returns"
],
"buttonLabels": [],
"people": [],
"allText": [
"use client",
"@/hooks/useVulaContent",
"@/components/ui/Badge",
"lucide-react",
"policies",
"flex justify-center py-16",
"w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin text-[#0077BE]",
"shipping-returns",
"shippingreturns",
"py-20 px-6 bg-[#F0F8FF]",
"max-w-5xl mx-auto",
"text-3xl font-bold text-[#1A2B3C] mb-10 text-center",
"Delivery & Returns",
"grid gap-8 md:grid-cols-2 lg:grid-cols-3",
"Shipping",
"w-8 h-8 text-[#00A8CC]",
"Returns",
"Packaging",
"bg-white rounded-xl shadow-md p-6",
"flex items-center gap-3 mb-3",
"primary",
"bg-[#0077BE] text-white",
"Policy",
"text-[#1A2B3C]/80 text-sm leading-relaxed",
"Transparent policy details from our team."
],
"cmsCollection": "policies"
},
{
"name": "ConnectWithDivaSection",
"importPath": "@/components/sections/ConnectWithDivaSection",
"position": 13,
"role": "unknown",
"hasImage": false,
"hasForm": true,
"itemCount": 15,
"layout": "grid",
"headings": [
"Connect With Diva",
"Follow us"
],
"buttonLabels": [
"Send Message"
],
"people": [],
"allText": [
"use client",
"react",
"@/components/ui/Button",
"@/components/ui/Input",
"lucide-react",
"@/components/ui/Card",
"info@divafashion.co.za",
"+27 21 555 0199",
"42 Bree Street, Cape Town City Centre, 8001",
"connectwithdiva",
"connect",
"py-20 px-6 bg-[#0077BE] text-white",
"max-w-5xl mx-auto",
"text-3xl font-bold mb-4 text-center",
"Connect With Diva",
"text-white/70 text-center mb-12 max-w-xl mx-auto",
"Got a style query, collaboration idea, or just want to say hi? We'd love to hear from you.",
"grid md:grid-cols-2 gap-10",
"bg-white text-[#1A2B3C]",
"text-xl",
"Send us a message",
"space-y-4",
"block text-sm font-medium mb-1",
"Name",
"Your name",
"Email",
"email",
"you@example.com",
"Message",
"Tell us what you're thinking...",
"w-full rounded-lg border border-[#e7eaef] px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-[#0077BE]",
"submit",
"default",
"lg",
"w-full bg-[#0077BE] hover:bg-[#005fa3] text-white",
"Send Message",
"flex flex-col justify-between space-y-8",
"flex items-start gap-3",
"w-5 h-5 mt-0.5 text-[#FFD700]",
"text-white/90",
"outline",
"border-[#FFD700] text-[#FFD700] hover:bg-[#FFD700] hover:text-[#1A2B3C]",
"_blank",
"noopener noreferrer",
"flex items-center gap-2",
"w-4 h-4",
"WhatsApp Us",
"font-semibold text-lg mb-3",
"Follow us",
"flex gap-4"
]
}
],
"navigationLinks": [
"Diva",
"Home",
"Just Dropped",
"Featured Products",
"Urban Ambition",
"Most Popular",
"Diva Lookbook",
"Products"
]
}