diff --git a/vula-index.json b/vula-index.json new file mode 100644 index 0000000..f917c48 --- /dev/null +++ b/vula-index.json @@ -0,0 +1,576 @@ +{ + "projectName": "Kasi Drip", + "businessType": "ecommerce", + "industry": "ecommerce", + "tone": "", + "tier": 3, + "generatedAt": "2026-08-01T16:48:18.380Z", + "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": "DropBannerHypeSection", + "importPath": "@/components/sections/DropBannerHypeSection", + "position": 1, + "role": "hero", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "next/link", + "lucide-react", + "@/hooks/useVulaContent", + "advert_banners", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "drop-banner-hype", + "dropbannerhype", + "bg-[#ea580c] text-[#18181b]", + "mx-auto max-w-7xl px-4 py-12 sm:px-6 lg:py-16", + "grid overflow-hidden border-2 border-[#18181b] bg-[#18181b] shadow-[8px_8px_0_0_#fbbf24] lg:grid-cols-[1fr_auto]", + "p-6 text-white lg:p-10", + "text-sm font-black uppercase tracking-[0.3em] text-[#fbbf24]", + "Exclusive drop", + "mt-3 text-4xl font-black uppercase leading-none sm:text-5xl", + "mt-4 max-w-xl text-white/80", + "mt-6 flex flex-wrap items-center gap-4", + "border-2 border-[#fbbf24] bg-[#fbbf24] px-4 py-2 text-lg font-black text-[#18181b]", + "inline-flex items-center gap-2 border-2 border-[#fbbf24] px-6 py-3 text-sm font-black uppercase text-[#fbbf24] transition-all duration-200 ease-out hover:bg-[#fbbf24] hover:text-[#18181b]", + "Shop the drop", + "h-4 w-4", + "relative min-h-[220px] w-full border-t-2 border-[#fbbf24] lg:min-h-[260px] lg:w-[380px] lg:border-l-2 lg:border-t-0", + "Kasi Drip drop", + "(max-width: 1024px) 100vw, 380px", + "object-cover", + "h-full w-full bg-[#fbbf24]" + ], + "cmsCollection": "advert_banners" + }, + { + "name": "FeaturedProductsSection", + "importPath": "@/components/sections/FeaturedProductsSection", + "position": 2, + "role": "services", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "{title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "@/hooks/useVulaContent", + "featured_products", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "featuredproducts", + "py-16 bg-white", + "max-w-6xl mx-auto px-4 sm:px-6 lg:px-8", + "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6", + "bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition-shadow border border-gray-100", + "relative h-48", + "object-cover", + "p-5", + "font-semibold text-gray-900 mb-2", + "text-gray-600 text-sm" + ], + "cmsCollection": "featured_products" + }, + { + "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": "CampaignLookbookSection", + "importPath": "@/components/sections/CampaignLookbookSection", + "position": 4, + "role": "cms-campaigns", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "@/hooks/useVulaContent", + "lucide-react", + "campaigns", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "campaign-lookbook", + "campaignlookbook", + "bg-[#18181b] py-20", + "mx-auto max-w-7xl px-4", + "mb-10 flex flex-col gap-4 border-l-4 border-[#fbbf24] pl-4", + "text-sm font-bold uppercase tracking-[0.3em] text-[#fbbf24]", + "Lookbook / Durban", + "max-w-2xl text-4xl font-black uppercase text-white md:text-6xl", + "Shoots that", + "text-[#fbbf24]", + "hit", + "different.", + "grid gap-8 md:grid-cols-2", + "group border-2 border-white bg-white shadow-[6px_6px_0_0_#fbbf24] transition-all duration-200 ease-out hover:-translate-x-1 hover:-translate-y-1", + "relative h-72 overflow-hidden border-b-2 border-white md:h-80", + "Kasi Drip campaign", + "(max-width: 768px) 100vw, 50vw", + "object-cover transition-transform duration-500 ease-out group-hover:scale-105", + "flex h-full items-center justify-center bg-[#fbbf24] text-4xl font-black text-black", + "KD", + "p-5", + "text-sm font-bold uppercase tracking-widest text-[#ea580c]", + "mt-1 text-2xl font-black uppercase text-black", + "mt-2 text-sm text-zinc-700", + "mt-4 inline-flex items-center gap-2 bg-[#18181b] px-4 py-2 text-sm font-bold uppercase text-[#fbbf24]", + "h-4 w-4" + ], + "cmsCollection": "campaigns" + }, + { + "name": "GallerySection", + "importPath": "@/components/sections/GallerySection", + "position": 5, + "role": "gallery", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "You copped. Now show off.", + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "@/hooks/useVulaContent", + "gallery", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "bg-[#fbbf24] py-20", + "mx-auto max-w-7xl px-4", + "mb-10 flex flex-col gap-4 border-l-4 border-[#18181b] pl-4", + "text-sm font-bold uppercase tracking-[0.3em] text-[#18181b]", + "Raw feed / #KasiDripFam", + "max-w-2xl text-4xl font-black uppercase text-[#18181b] md:text-6xl", + "You copped. Now show off.", + "grid grid-cols-2 gap-4 md:grid-cols-3", + "md:col-span-2 md:row-span-2", + "Kasi Drip gallery", + "(max-width: 768px) 100vw, 33vw", + "object-cover transition-transform duration-500 ease-out group-hover:scale-105", + "flex h-full items-center justify-center bg-[#18181b] text-4xl font-black text-[#fbbf24]", + "KD", + "absolute inset-0 flex items-end bg-gradient-to-t from-black/80 via-black/20 to-transparent opacity-0 transition-opacity duration-200 ease-out group-hover:opacity-100", + "p-4", + "text-lg font-black uppercase text-white", + "mt-1 text-sm text-white/80", + "mt-10 text-center text-sm font-bold uppercase tracking-widest text-[#18181b]", + "Tag @kasidrip — you might make the feed." + ], + "cmsCollection": "gallery" + }, + { + "name": "CommunityHighlightsSection", + "importPath": "@/components/sections/CommunityHighlightsSection", + "position": 6, + "role": "blog", + "hasImage": true, + "hasForm": false, + "itemCount": -1, + "layout": "grid", + "headings": [ + "{d.title}" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "next/image", + "@/hooks/useVulaContent", + "posts", + "flex justify-center py-16", + "w-8 h-8 rounded-full border-2 border-current border-t-transparent animate-spin", + "community-highlights", + "communityhighlights", + "bg-[#18181b] py-20", + "mx-auto max-w-7xl px-4", + "mb-10 flex flex-col gap-4 border-l-4 border-[#ea580c] pl-4", + "text-sm font-bold uppercase tracking-[0.3em] text-[#ea580c]", + "Community / Hype", + "max-w-2xl text-4xl font-black uppercase text-white md:text-6xl", + "The family", + "text-[#fbbf24]", + "talks", + "grid gap-6 md:grid-cols-3", + "group border-2 border-[#fbbf24] bg-[#18181b] shadow-[6px_6px_0_0_#fbbf24] transition-all duration-200 ease-out hover:-translate-x-1 hover:-translate-y-1", + "relative h-52 overflow-hidden border-b-2 border-[#fbbf24]", + "Kasi Drip community post", + "(max-width: 768px) 100vw, 33vw", + "object-cover transition-transform duration-500 ease-out group-hover:scale-105", + "flex h-full items-center justify-center bg-[#fbbf24] text-4xl font-black text-[#18181b]", + "KD", + "p-5", + "bg-[#ea580c] px-2 py-1 text-xs font-black uppercase text-white", + "mt-3 text-xl font-black uppercase text-white", + "mt-2 text-sm text-zinc-400", + "mt-4 text-xs font-bold uppercase tracking-widest text-[#fbbf24]" + ], + "cmsCollection": "posts" + }, + { + "name": "AboutKasiDripSection", + "importPath": "@/components/sections/AboutKasiDripSection", + "position": 7, + "role": "about", + "hasImage": true, + "hasForm": false, + "itemCount": 6, + "layout": "grid", + "headings": [ + "From kasi streets to streetwear statement." + ], + "buttonLabels": [], + "people": [], + "allText": [ + "next/image", + "next/link", + "aboutkasidrip", + "about-kasi-drip", + "bg-white text-[#18181b]", + "grid lg:grid-cols-2", + "relative min-h-[50vh] border-b-4 border-[#18181b] lg:min-h-[70vh] lg:border-b-0 lg:border-r-4", + "Kasi Drip crew in Durban", + "(max-width: 1024px) 100vw, 50vw", + "object-cover", + "flex flex-col justify-center bg-[#18181b] px-6 py-14 text-white lg:px-14", + "mb-4 text-sm font-black uppercase tracking-[0.3em] text-[#fbbf24]", + "Born in Durban", + "text-4xl font-black uppercase leading-none sm:text-5xl", + "From kasi streets to streetwear statement.", + "mt-5 max-w-xl text-lg text-white/80", + "Kasi Drip started in Durban's townships, where style is survival and every corner has a story. We print those stories on heavyweight tees, oversized hoodies and caps that move from the block to the global front row.", + "mt-4 max-w-xl text-white/70", + "Limited numbered drops. No restocks. When it's gone, it's gone — same as the moment.", + "mt-8 flex flex-wrap gap-3", + "border-2 border-[#fbbf24] bg-[#fbbf24] px-4 py-3 font-black uppercase text-[#18181b]", + "Durban, KZN", + "border-2 border-white px-4 py-3 font-black uppercase", + "Est. 2019", + "mt-8 inline-flex w-fit items-center justify-center border-2 border-[#fbbf24] bg-[#fbbf24] px-8 py-4 text-sm font-black uppercase tracking-wider text-[#18181b] shadow-[6px_6px_0_0_#ea580c] transition-all duration-200 ease-out hover:-translate-y-0.5 hover:shadow-[8px_8px_0_0_#ea580c]", + "Shop the story" + ] + }, + { + "name": "CTAShopDropsSection", + "importPath": "@/components/sections/CTAShopDropsSection", + "position": 8, + "role": "cta", + "hasImage": false, + "hasForm": false, + "itemCount": 3, + "layout": "grid", + "headings": [], + "buttonLabels": [], + "people": [], + "allText": [ + "next/link", + "ctashopdrops", + "shop-drops", + "bg-[#fbbf24] border-y-[3px] border-[#18181b]", + "grid md:grid-cols-2 min-h-[420px]", + "bg-[#18181b] text-[#fbbf24] p-8 md:p-14 flex flex-col justify-center border-b-[3px] md:border-b-0 md:border-r-[3px] border-[#18181b]", + "text-xs md:text-sm font-black uppercase tracking-[0.2em] text-[#fbbf24] mb-4", + "Drop 04 — Live now", + "font-black uppercase leading-[0.9] text-4xl md:text-6xl text-white", + "Copped the", + "text-[#fbbf24]", + "drop", + "yet?", + "mt-5 text-white/80 font-medium max-w-md", + "Limited pieces, no restocks. Free delivery over R750 to every kasi in SA.", + "mt-8 inline-flex items-center justify-center bg-[#fbbf24] text-[#18181b] font-black uppercase tracking-wide text-lg px-8 py-5 border-[3px] border-[#fbbf24] shadow-[6px_6px_0_0_#fbbf24] hover:shadow-[2px_2px_0_0_#fbbf24] hover:translate-x-1 hover:translate-y-1 transition-all duration-200 ease-out w-fit", + "SHOP THE DROP", + "bg-[#fbbf24] text-[#18181b] p-8 md:p-14 flex flex-col justify-center", + "text-xs md:text-sm font-black uppercase tracking-[0.2em] mb-4", + "No restocks. No warning.", + "font-black uppercase leading-[0.9] text-4xl md:text-7xl text-[#18181b]", + "2px #18181b", + "transparent", + "JOIN", + "THE MOVEMENT", + "mt-5 font-semibold max-w-md text-[#18181b]/80", + "100% Durban street culture printed loud. Your fit should say it before you do.", + "mt-8 inline-flex items-center justify-center bg-[#18181b] text-[#fbbf24] font-black uppercase text-lg px-8 py-5 border-[3px] border-[#18181b] shadow-[6px_6px_0_0_#18181b] hover:shadow-[2px_2px_0_0_#18181b] hover:translate-x-1 hover:translate-y-1 transition-all duration-200 ease-out w-fit", + "Browse latest" + ] + }, + { + "name": "CollabEnquirySection", + "importPath": "@/components/sections/CollabEnquirySection", + "position": 9, + "role": "contact", + "hasImage": false, + "hasForm": true, + "itemCount": 10, + "layout": "grid", + "headings": [ + "Message received. Aweh.", + "Tell us about the collab" + ], + "buttonLabels": [], + "people": [], + "allText": [ + "use client", + "react", + "lucide-react", + "@/components/ui/Button", + "@/components/ui/Input", + "collabenquiry", + "collab-enquiry", + "bg-[#18181b] text-white", + "grid lg:grid-cols-2", + "p-8 md:p-14 border-b-[3px] lg:border-b-0 lg:border-r-[3px] border-[#fbbf24]", + "text-xs md:text-sm font-black uppercase tracking-[0.2em] text-[#fbbf24] mb-4", + "Collab Enquiry", + "font-black uppercase leading-[0.9] text-4xl md:text-6xl", + "Let's build", + "2px #fbbf24", + "transparent", + "together", + "mt-5 text-white/70 font-medium max-w-md", + "Brands, wholesalers, creators, DJs, photographers — if your energy matches the kasi, let's talk.", + "mt-8 space-y-4", + "mailto:collab@kasidrip.co.za", + "flex items-center gap-3 font-bold text-[#fbbf24] hover:text-white transition-all duration-200 ease-out", + "w-5 h-5", + "collab@kasidrip.co.za", + "_blank", + "noreferrer", + "WhatsApp +27 82 555 0132", + "mt-6 text-sm text-white/50 font-medium", + "Kasi Drip HQ // Durban — shipping nationwide.", + "p-8 md:p-14 bg-[#fbbf24] text-[#18181b]", + "h-full flex flex-col justify-center", + "bg-[#18181b] text-[#fbbf24] p-8 border-[3px] border-[#18181b] shadow-[8px_8px_0_0_#18181b]", + "w-8 h-8 mb-4", + "font-black uppercase text-2xl", + "Message received. Aweh.", + "mt-3 font-semibold", + "We reply within 48 hours. Keep an eye on your inbox.", + "space-y-5", + "Tell us about the collab", + "name", + "text-xs font-black uppercase tracking-widest", + "Your name", + "Thabo M.", + "mt-2 bg-white border-[#18181b]", + "brand", + "Brand / crew", + "Your brand or collective", + "email", + "Email", + "you@email.com" + ] + }, + { + "name": "AdvertBannerSection", + "importPath": "@/components/sections/AdvertBannerSection", + "position": 99, + "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": "BrandCarouselSection", + "importPath": "@/components/sections/BrandCarouselSection", + "position": 99, + "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": 99, + "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" + ] + } + ], + "navigationLinks": [ + "Kasi Drip", + "Home", + "About Kasi Drip", + "Campaign Lookbook", + "Gallery", + "C T A Shop Drops", + "Collab Enquiry", + "Products", + "My Account" + ] +} \ No newline at end of file