diff --git a/vula-index.json b/vula-index.json new file mode 100644 index 0000000..886d66b --- /dev/null +++ b/vula-index.json @@ -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" + ] +} \ No newline at end of file