import React, { useMemo, useState } from "react"; import { ShoppingCart, Menu, X, Plus, Minus, Truck, ShieldCheck, CreditCard, Smartphone, BadgeEuro, CheckCircle2, Instagram, Music2, Mail, MapPin, Play, CalendarDays, Image as ImageIcon, Newspaper, Disc3, Youtube, Facebook, } from "lucide-react"; export default function BandMerchSite() { const products = [ { id: 1, name: "T-Shirt Ritual Tour", price: 25, tag: "Best seller", image: "https://images.unsplash.com/photo-1521572163474-6864f9cf17ab?auto=format&fit=crop&w=1200&q=80", desc: "T-shirt oficial com visual dark, algodão premium e edição limitada.", sizes: ["S", "M", "L", "XL"], }, { id: 2, name: "Hoodie Black Ceremony", price: 45, tag: "Nova coleção", image: "https://images.unsplash.com/photo-1503342217505-b0a15ec3261c?auto=format&fit=crop&w=1200&q=80", desc: "Hoodie pesado, confortável e com presença forte de palco.", sizes: ["M", "L", "XL"], }, { id: 3, name: "Boné Eclipse", price: 20, tag: "Acessório", image: "https://images.unsplash.com/photo-1521369909029-2afed882baee?auto=format&fit=crop&w=1200&q=80", desc: "Boné ajustável bordado a preto com detalhe frontal premium.", sizes: ["Único"], }, { id: 4, name: "Pack Signed Relic", price: 60, tag: "Limitado", image: "https://images.unsplash.com/photo-1516280440614-37939bbacd81?auto=format&fit=crop&w=1200&q=80", desc: "Pack autografado com t-shirt, poster, pulseira e item exclusivo.", sizes: ["M", "L", "XL"], }, ]; const news = [ { title: "Novo single lançado com videoclipe oficial", text: "Apresentação do novo tema com estreia mundial no YouTube e Spotify.", }, { title: "Data nova adicionada à tour", text: "Mais uma noite confirmada para reforçar a agenda ao vivo da banda.", }, { title: "Edição limitada de merch disponível", text: "Coleção especial disponível até esgotar, pensada para os fãs mais fiéis.", }, ]; const timeline = [ { year: "2022", title: "Formação da banda", text: "Primeiras composições, conceito visual e identidade sonora." }, { year: "2023", title: "Primeiro EP", text: "Lançamento independente e construção da base de fãs." }, { year: "2024", title: "Primeiros festivais", text: "Entrada em palcos maiores e exposição nacional." }, { year: "2026", title: "Nova era", text: "Tour, vídeos, merch e posicionamento de marca mais forte." }, ]; const releases = [ { title: "Ashes of the Sun", type: "Single", year: "2026" }, { title: "Dark Bloom", type: "EP", year: "2025" }, { title: "Black Veins", type: "Single", year: "2024" }, ]; const videos = [ { title: "Official Music Video", duration: "04:12" }, { title: "Live Session", duration: "07:48" }, { title: "Behind The Scenes", duration: "03:36" }, ]; const gallery = [ "https://images.unsplash.com/photo-1501386761578-eac5c94b800a?auto=format&fit=crop&w=1200&q=80", "https://images.unsplash.com/photo-1493225457124-a3eb161ffa5f?auto=format&fit=crop&w=1200&q=80", "https://images.unsplash.com/photo-1507874457470-272b3c8d8ee2?auto=format&fit=crop&w=1200&q=80", "https://images.unsplash.com/photo-1506157786151-b8491531f063?auto=format&fit=crop&w=1200&q=80", ]; const shows = [ { date: "03 Maio 2026", city: "Porto", venue: "Hard Club" }, { date: "17 Maio 2026", city: "Lisboa", venue: "Music Station" }, { date: "07 Junho 2026", city: "Coimbra", venue: "Salão Central" }, { date: "21 Junho 2026", city: "Braga", venue: "Arena Live" }, ]; const [mobileMenu, setMobileMenu] = useState(false); const [selectedSizes, setSelectedSizes] = useState({ 1: "M", 2: "L", 3: "Único", 4: "L" }); const [cart, setCart] = useState([ { productId: 1, quantity: 1, size: "M" }, { productId: 3, quantity: 1, size: "Único" }, ]); const [paymentMethod, setPaymentMethod] = useState("mbway"); const [coupon, setCoupon] = useState(""); const [couponApplied, setCouponApplied] = useState(false); const addToCart = (productId) => { const size = selectedSizes[productId] || "M"; setCart((prev) => { const existing = prev.find((item) => item.productId === productId && item.size === size); if (existing) { return prev.map((item) => item.productId === productId && item.size === size ? { ...item, quantity: item.quantity + 1 } : item ); } return [...prev, { productId, quantity: 1, size }]; }); }; const updateQty = (productId, size, delta) => { setCart((prev) => prev .map((item) => item.productId === productId && item.size === size ? { ...item, quantity: Math.max(0, item.quantity + delta) } : item ) .filter((item) => item.quantity > 0) ); }; const cartDetailed = useMemo( () => cart.map((item) => { const product = products.find((p) => p.id === item.productId); return { ...item, product }; }), [cart] ); const subtotal = cartDetailed.reduce((acc, item) => acc + item.product.price * item.quantity, 0); const discount = couponApplied ? Math.round(subtotal * 0.1 * 100) / 100 : 0; const shipping = subtotal - discount >= 50 ? 0 : 4.9; const total = Math.max(0, subtotal - discount + shipping); return (

Official site

SPIDER MOTHER EARTH

{mobileMenu && (
{[ ["#start", "Start"], ["#articles", "Articles"], ["#timeline", "Timeline"], ["#music", "Music"], ["#videos", "Videos"], ["#gallery", "Gallery"], ["#biography", "Biography"], ["#store", "Store"], ["#contacts", "Contacts"], ].map(([href, label]) => ( setMobileMenu(false)} className="text-zinc-300"> {label} ))}
)}

Dark rock / cinematic / official merchandise

The web presence this band deserves

Uma homepage muito mais forte, com identidade pesada, storytelling, lançamentos, vídeos, galeria, agenda ao vivo e loja com pagamentos. Feita para parecer banda séria, não apenas um site montado.

Latest

New era 2026

Novo visual, novo single, novos vídeos e loja pronta para monetizar a atenção dos fãs.

Store

Real checkout

MB WAY, Multibanco, cartão e PayPal preparados para integração real no teu servidor.

Spotify YouTube Instagram Bandcamp

Articles

News & updates

O site que enviaste tem menu e presença básica; aqui elevamos com secção editorial mais forte para comunicar lançamentos, datas e novidades.

{news.map((item) => (

{item.title}

{item.text}

))}

Timeline

The rise of the band

{timeline.map((item) => (

{item.year}

{item.title}

{item.text}

))}

Music

Latest releases

Now playing

Ashes of the Sun

Uma área de destaque maior para single ou álbum, com embed de Spotify, Apple Music, Bandcamp ou player interno.

{releases.map((item) => (

{item.title}

{item.type} • {item.year}

))}

Videos

Watch the visuals

{videos.map((video, index) => (
{video.duration}

{video.title}

Vídeo {index + 1} com embed real do YouTube/Vimeo na versão final.

))}

Biography

Dark, visceral, memorable

Esta secção substitui a biografia simples por um texto mais premium, com origem da banda, influências, conceito visual, discografia, energia ao vivo e posicionamento artístico. A ideia é fazer o visitante sentir que entrou num projeto sério, atual e com identidade bem definida.

Live dates

Upcoming shows

{shows.map((show) => (
{show.date}

{show.city}

{show.venue}

))}

Store

Official merchandise

Aqui entra a parte que faltava ao site de referência: uma loja séria e bonita, já pensada para vender mesmo.

{products.map((product) => (
{product.name} {product.tag}

{product.name}

{product.price}€

{product.desc}

{product.sizes.map((size) => ( ))}
))}

Checkout

Payment preview

Shipping details

Payment methods

{[ { id: "mbway", label: "MB WAY", icon: Smartphone, desc: "Pagamento imediato no telemóvel." }, { id: "multibanco", label: "Multibanco", icon: BadgeEuro, desc: "Entidade e referência para pagamento." }, { id: "card", label: "Card", icon: CreditCard, desc: "Visa, Mastercard e outros cartões." }, { id: "paypal", label: "PayPal", icon: ShieldCheck, desc: "Checkout rápido com conta PayPal." }, ].map((method) => { const Icon = method.icon; const active = paymentMethod === method.id; return ( ); })}

Order summary

{cartDetailed.map((item) => (

{item.product.name}

Size: {item.size}

{item.product.price}€ each

{item.quantity}
))}

Coupon

setCoupon(e.target.value)} placeholder="SME10" className="w-full rounded-2xl border border-white/10 bg-zinc-950 px-4 py-3 outline-none placeholder:text-zinc-600" />
{couponApplied &&

Coupon SME10 applied successfully.

}
Subtotal{subtotal.toFixed(2)}€
Discount-{discount.toFixed(2)}€
Shipping{shipping === 0 ? 'Free' : `${shipping.toFixed(2)}€`}
Total{total.toFixed(2)}€

Pré-visualização do checkout. A ligação real ao gateway entra depois no teu servidor.

Contacts

Booking, press & support

Fecho mais profissional com redes, booking, contacto da banda e suporte de loja no mesmo ecossistema.

booking@band.com

@spidermotherearth

YouTube Channel

Official Facebook

); }