Files
Vula Builder b1c00ce619 Deploy
2026-07-29 19:04:13 +00:00

634 lines
22 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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"
]
}