// pages.jsx — Páginas de MiPC y su Mundo // Home, Categoría, Detalle Producto, Carrito, Checkout, Login, Búsqueda const { useState: usePgState, useEffect: usePgEffect, useMemo: usePgMemo } = React; const fmt = () => window.MiPCInventario.formatoCOP; // ── HOME ───────────────────────────────────────────────────────────── function HomePage({ onNavigate, addToCart, variant, showBanners }) { const all = window.MiPCInventario.todos(); const destacados = all.filter(p => p.precioAntes && p.precioAntes > p.precio).slice(0, 8); const masVendidos = [...all].sort((a,b)=>(b.reviews||0)-(a.reviews||0)).slice(0,8); const nuevos = [...all].slice(-8); if (variant === 'B') { return ; } return (
{showBanners && (
onNavigate('/categoria/computadores')}/> onNavigate('/categoria/gaming')}/> onNavigate('/categoria/audio')}/>
)}

¿Te asesoramos?

Nuestros expertos te ayudan a elegir el producto perfecto para ti. Chatea con nosotros sin compromiso.

); } // Home variante B — más editorial, menos colorida, foco en producto destacado function HomeB({ onNavigate, addToCart, showBanners, all }) { const destacados = all.filter(p => p.precioAntes && p.precioAntes > p.precio).slice(0, 6); const masVendidos = [...all].sort((a,b)=>(b.reviews||0)-(a.reviews||0)).slice(0,8); const hero = all.find(p => /iphone|xiaomi|samsung/i.test(p.nombre) && p.precio > 500000) || all.find(p => p.precio > 1500000) || all[0]; const F = fmt(); return (
YA DISPONIBLE

{hero.nombre.split(' ').slice(0,3).join(' ')}

{hero.descripcion}

{F(hero.precio)} o 12 cuotas de {F(hero.precio/12)}

Explora categorías

{window.MiPCInventario.categorias.map(c => ( ))}
{showBanners && (
onNavigate('/categoria/gaming')}/> onNavigate('/categoria/oficina')}/>
)}
); } // Promo banner function PromoBanner({ color, kicker, title, big, cta, onClick }) { return ( ); } // Carrusel horizontal de productos function ProductShelf({ title, subtitle, items, onNavigate, addToCart }) { const ref = React.useRef(null); const scroll = (dir) => { if (!ref.current) return; ref.current.scrollBy({ left: dir * 600, behavior: 'smooth' }); }; if (!items.length) return null; return (

{title}

{subtitle &&

{subtitle}

}
{items.map(p => (
onNavigate('/producto/'+p.id)} onAdd={addToCart}/>
))}
); } // ── CATEGORÍA / LISTING ────────────────────────────────────────────── function CategoryPage({ cat, onNavigate, addToCart, density }) { const cats = window.MiPCInventario.categorias; const all = window.MiPCInventario.todos(); const ofertas = cat === 'ofertas'; const catInfo = cats.find(c => c.id === cat); const base = ofertas ? all.filter(p => p.precioAntes && p.precioAntes > p.precio) : all.filter(p => p.categoria === cat); // Filtros disponibles const marcasDisp = [...new Set(base.map(p => p.marca))].sort(); const precios = base.map(p => p.precio); const minP = Math.min(...precios, 0), maxP = Math.max(...precios, 1000000); const [marcasSel, setMarcasSel] = usePgState([]); const [precioMax, setPrecioMax] = usePgState(maxP); const [soloOferta, setSoloOferta] = usePgState(ofertas); const [envioGratis, setEnvioGratis] = usePgState(false); const [orden, setOrden] = usePgState('relevancia'); const [mostrarFiltros, setMostrarFiltros] = usePgState(false); usePgEffect(() => { setMarcasSel([]); setPrecioMax(maxP); setSoloOferta(ofertas); setEnvioGratis(false); }, [cat]); let filtrados = base.filter(p => (!marcasSel.length || marcasSel.includes(p.marca)) && p.precio <= precioMax && (!soloOferta || (p.precioAntes && p.precioAntes > p.precio)) && (!envioGratis || p.envioGratis) ); if (orden === 'precio-asc') filtrados = [...filtrados].sort((a,b)=>a.precio-b.precio); else if (orden === 'precio-desc') filtrados = [...filtrados].sort((a,b)=>b.precio-a.precio); else if (orden === 'rating') filtrados = [...filtrados].sort((a,b)=>(b.rating||0)-(a.rating||0)); else if (orden === 'descuento') filtrados = [...filtrados].sort((a,b)=>{ const da = a.precioAntes ? (a.precioAntes - a.precio)/a.precioAntes : 0; const db = b.precioAntes ? (b.precioAntes - b.precio)/b.precioAntes : 0; return db - da; }); const toggleMarca = (m) => { setMarcasSel(s => s.includes(m) ? s.filter(x=>x!==m) : [...s, m]); }; const F = fmt(); return (

{ofertas ? '🔥 Ofertas del día' : (catInfo?.nombre || cat)}

{filtrados.length} productos
{filtrados.length === 0 ? (
🔎

No encontramos productos con esos filtros

Prueba ajustando el precio o quitando marcas

) : (
{filtrados.map(p => ( onNavigate('/producto/'+p.id)} onAdd={addToCart}/> ))}
)}
); } // ── DETALLE DE PRODUCTO ────────────────────────────────────────────── function ProductPage({ id, onNavigate, addToCart }) { const p = window.MiPCInventario.porId(id); const [qty, setQty] = usePgState(1); const [tab, setTab] = usePgState('desc'); const F = fmt(); if (!p) return (

Producto no encontrado

); const cat = window.MiPCInventario.categorias.find(c => c.id === p.categoria); const desc = p.precioAntes && p.precioAntes > p.precio ? Math.round((1 - p.precio / p.precioAntes) * 100) : 0; const relacionados = window.MiPCInventario.porCategoria(p.categoria).filter(x=>x.id!==p.id).slice(0,4); return (
{desc > 0 && -{desc}%}
{[0,1,2,3].map(i => (
))}
{p.marca}

{p.nombre}

{p.precioAntes && p.precioAntes > p.precio && (
{F(p.precioAntes)}
)}
{F(p.precio)}
o 12 cuotas sin interés de {F(p.precio/12)}
{desc > 0 && -{desc}% de descuento}
{p.stock > 5 ? ( ✓ Disponible · {p.stock} unidades ) : p.stock > 0 ? ( ¡Quedan solo {p.stock}! ) : ( Agotado )}
Cantidad:
{p.envioGratis && (
Envío gratis a todo Colombia · Llega en 2-4 días hábiles
)}
Garantía: 12 meses directo con la marca
Paga hasta en 36 cuotas con tu tarjeta de crédito
{[['desc','Descripción'],['especs','Especificaciones'],['reviews','Opiniones ('+(p.reviews||0)+')']].map(([k,l]) => ( ))}
{tab === 'desc' && (

{p.descripcion}

En Mi PC y su Mundo sabemos lo importante que es para ti elegir el producto correcto. Por eso, te ofrecemos asesoría personalizada, garantía directa con la marca y los mejores precios del mercado.

  • Producto 100% original y nuevo
  • Factura electrónica
  • Soporte técnico postventa
  • Cambio gratis en los primeros 30 días
)} {tab === 'especs' && (
Marca{p.marca}
Categoría{cat?.nombre}
SKU{p.id.toUpperCase()}
Garantía12 meses
Stock{p.stock} unidades
CondiciónNuevo
)} {tab === 'reviews' && (
{p.rating?.toFixed(1)}
{p.reviews} opiniones verificadas
    {[ {n:'Carolina M.', d:'Hace 2 días', s:5, t:'Excelente producto, llegó muy rápido y empaque impecable. Muy recomendado.'}, {n:'Andrés R.', d:'Hace 1 semana', s:5, t:'Justo lo que esperaba, calidad/precio insuperable. Gracias por la asesoría.'}, {n:'Laura P.', d:'Hace 2 semanas', s:4, t:'Cumple lo prometido. El envío demoró un día más pero todo bien.'}, ].map((r,i) => (
  • {r.n} · {r.d}

    {r.t}

  • ))}
)}
{relacionados.length > 0 && ( )}
); } // ── CARRITO ────────────────────────────────────────────────────────── function CartPage({ cart, setQty, removeItem, onNavigate }) { const F = fmt(); const subtotal = cart.reduce((s, it) => s + it.p.precio * it.qty, 0); const envio = subtotal > 150000 || subtotal === 0 ? 0 : 12000; const total = subtotal + envio; if (cart.length === 0) { return (
🛒

Tu carrito está vacío

Encuentra los mejores productos al mejor precio

); } return (

Mi carrito ({cart.reduce((s,i)=>s+i.qty,0)} productos)

{cart.map(it => (
onNavigate('/producto/'+it.p.id)}>
onNavigate('/producto/'+it.p.id)}>{it.p.nombre}
{it.p.marca}
{it.p.envioGratis &&
🚚 Envío gratis
}
{it.p.precioAntes && {F(it.p.precioAntes * it.qty)}} {F(it.p.precio * it.qty)} {it.qty > 1 && {F(it.p.precio)} c/u}
))}
); } // ── CHECKOUT ───────────────────────────────────────────────────────── function CheckoutPage({ cart, onNavigate, clearCart }) { const F = fmt(); const [step, setStep] = usePgState(1); const [pago, setPago] = usePgState('tc'); const [done, setDone] = usePgState(false); const subtotal = cart.reduce((s, it) => s + it.p.precio * it.qty, 0); const envio = subtotal > 150000 ? 0 : 12000; const total = subtotal + envio; if (done) { return (

¡Tu pedido fue creado!

Te enviamos los detalles a tu correo. Pedido #MPC-{Math.floor(Math.random()*900000+100000)}

Total pagado{F(total)}
Forma de pago{pago==='tc'?'Tarjeta de crédito':pago==='pse'?'PSE':'Nequi'}
Entrega estimada2-4 días hábiles
); } return (

Finalizar compra

{['Datos','Envío','Pago'].map((l,i)=>(
=i+1?'on':''}`}> {i+1}{l}
))}
{step === 1 && (

Tus datos

)} {step === 2 && (

Dirección de envío

)} {step === 3 && (

Forma de pago

{[ ['tc','Tarjeta de crédito / débito','💳'], ['pse','PSE — Débito desde tu banco','🏦'], ['nequi','Nequi','📱'], ['addi','Addi — Paga en 4 cuotas sin interés','🪙'], ].map(([k,l,e])=>( ))}
{pago==='tc' && (
)}
)}
); } // ── LOGIN ──────────────────────────────────────────────────────────── function LoginPage({ onNavigate }) { const [mode, setMode] = usePgState('login'); return (

{mode==='login'?'Inicia sesión':'Crea tu cuenta'}

{mode==='login'?'Bienvenid@ de vuelta a Mi PC y su Mundo':'Únete y disfruta de ofertas exclusivas'}

{mode==='register' && ( )} {mode==='login' && ¿Olvidaste tu contraseña?}
o continúa con

{mode==='login'?'¿No tienes cuenta?':'¿Ya tienes cuenta?'}{' '} setMode(mode==='login'?'register':'login')}> {mode==='login'?'Regístrate':'Inicia sesión'}

Tu mundo tecnológico, a un clic

  • ✓ Seguimiento en tiempo real de tus pedidos
  • ✓ Cupones exclusivos para miembros
  • ✓ Lista de deseos y favoritos
  • ✓ Compra más rápido con tus direcciones guardadas
); } // ── BÚSQUEDA ───────────────────────────────────────────────────────── function SearchPage({ q, onNavigate, addToCart, density }) { const res = window.MiPCInventario.buscar(q); return (

Resultados para "{q}"

{res.length} productos encontrados

{res.length === 0 ? (
🔍

No encontramos nada con "{q}"

Prueba con otra palabra o explora nuestras categorías

) : (
{res.map(p => onNavigate('/producto/'+p.id)} onAdd={addToCart}/>)}
)}
); } Object.assign(window, { HomePage, CategoryPage, ProductPage, CartPage, CheckoutPage, LoginPage, SearchPage, ProductShelf, PromoBanner, });