// Café La Julia — data reales desde WordPress export (2026-04-22) const PRODUCTS = [ { id: 'chiapas-1kg', slug: 'cafe-de-chiapas-1-kg', name: 'Café de Chiapas', size: '1 Kg', origin: 'Chiapas · Concordia', originTag: 'chiapas', price: 590, priceOld: null, unit: '1 Kg', sku: 'cafe-1-kg-6', stock: 13, finca: 'Finca Nuevo México', altura: '1,300 msnm', variedad: 'Bourbon Rosado', proceso: 'Semi-Lavado', notas: ['chocolate', 'ralladura de naranja', 'panela', 'caramelo'], perfil: 'Acidez brillante y cítrica · Dulzor medio-alto · Cuerpo medio', desc: 'Nuestro café de Chiapas proviene de Concordia, una región reconocida por su riqueza natural y condiciones ideales para la producción de café de especialidad. Cultivado a 1,300 msnm en la Finca Nuevo México, este café refleja el trabajo cuidadoso del productor y un proceso bien controlado que resalta sus mejores cualidades.', img: '../../assets/products/chiapas-1kg.png', badges: ['100% Chiapas', 'Tueste fresco', 'Proceso Semi-Lavado', 'Envío a todo México'], highlight: 'Perfil dulce y balanceado', featured: true }, { id: 'chiapas-500', slug: 'cafe-de-chiapas-500-g', name: 'Café de Chiapas', size: '500 g', origin: 'Chiapas · Concordia', originTag: 'chiapas', price: 355, priceOld: null, unit: '500 g', sku: 'cafe-1-kg-7', stock: 13, finca: 'Finca Nuevo México', altura: '1,300 msnm', variedad: 'Bourbon Rosado', proceso: 'Semi-Lavado', notas: ['chocolate', 'ralladura de naranja', 'panela', 'caramelo'], perfil: 'Acidez brillante y cítrica · Dulzor medio-alto · Cuerpo medio', desc: 'Café de Chiapas cultivado a 1,300 msnm en Finca Nuevo México. Perfil complejo y aromático, ideal para métodos de goteo.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/20-1.png', badges: ['100% Chiapas', 'Tueste fresco', 'Proceso Semi-Lavado', 'Envío a todo México'] }, { id: 'chiapas-250', slug: 'cafe-de-chiapas-250-g', name: 'Café de Chiapas', size: '250 g', origin: 'Chiapas · Concordia', originTag: 'chiapas', price: 205, priceOld: null, unit: '250 g', sku: 'cafe-1-kg-8', stock: 13, finca: 'Finca Nuevo México', altura: '1,300 msnm', variedad: 'Bourbon Rosado', proceso: 'Semi-Lavado', notas: ['chocolate', 'ralladura de naranja', 'panela', 'caramelo'], perfil: 'Acidez brillante y cítrica · Dulzor medio-alto', desc: 'El origen de la sierra chiapaneca para probar en casa.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/21-1.png', badges: ['100% Chiapas', 'Tueste fresco', 'Proceso Semi-Lavado', 'Envío a todo México'] }, { id: 'puebla-500', slug: 'cafe-de-puebla-500-g', name: 'Café de Puebla', size: '500 g', origin: 'Puebla · Tlacuilotepec', originTag: 'puebla', price: 360, priceOld: null, unit: '500 g', sku: 'cafe-1-kg-12', stock: 13, finca: 'Finca Ofelia', altura: '1,400 msnm', variedad: 'Catimor', proceso: 'Lavado', notas: ['avellana', 'durazno', 'miel', 'caramelo'], perfil: 'Acidez balanceada · Dulzor medio-alto · Notas florales', desc: 'Nuestro café de Puebla proviene de Tlacuilotepec. Cultivado a 1,400 msnm en la Finca Ofelia, refleja un equilibrio perfecto entre dulzor, aroma y suavidad en taza.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/31.png', badges: ['100% Puebla', 'Tueste fresco', 'Proceso Lavado', 'Envío a todo México'], highlight: 'Notas florales', featured: true }, { id: 'veracruz-1kg', slug: 'cafe-1-kg', name: 'Café de Veracruz', size: '1 Kg', origin: 'Veracruz · Córdoba', originTag: 'veracruz', price: 470, priceOld: 490, unit: '1 Kg', sku: 'cafe-1-kg', stock: 13, finca: 'Region Córdoba', altura: '1,200 – 1,400 msnm', variedad: 'Sarchimor', proceso: 'Lavado', notas: ['chocolate', 'nuez', 'cacao suave'], perfil: 'Balanceado · Cuerpo medio · Aromático', desc: 'Nuestro café de Veracruz proviene de la región montañosa de Córdoba, donde el clima húmedo y la altura crean condiciones ideales para el cultivo de café arábica de alta calidad. Perfecto para quienes buscan un café equilibrado para el día a día.', img: 'https://cafelajulia.com/wp-content/uploads/2023/09/11-3.png', badges: ['100% Veracruz', 'Tueste fresco', 'Proceso Lavado', 'Envío a todo México'], sale: true, badge: 'Oferta', highlight: 'Favorito del barista', featured: true }, { id: 'veracruz-500', slug: 'cafe-de-veracruz-500-g', name: 'Café de Veracruz', size: '500 g', origin: 'Veracruz · Córdoba', originTag: 'veracruz', price: 340, priceOld: null, unit: '500 g', sku: 'cafe-1-kg-4', stock: 13, finca: 'Region Córdoba', altura: '1,200 – 1,400 msnm', variedad: 'Sarchimor', proceso: 'Lavado', notas: ['chocolate', 'nuez', 'cacao suave'], perfil: 'Balanceado · Cuerpo medio · Aromático', desc: 'Nuestro clásico de Córdoba para el día a día.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/13.png', badges: ['100% Veracruz', 'Tueste fresco', 'Proceso Lavado', 'Envío a todo México'] }, { id: 'veracruz-250', slug: 'cafe-de-veracruz-250-g', name: 'Café de Veracruz', size: '250 g', origin: 'Veracruz · Córdoba', originTag: 'veracruz', price: 205, priceOld: null, unit: '250 g', sku: 'cafe-1-kg-5', stock: 13, finca: 'Region Córdoba', altura: '1,200 – 1,400 msnm', variedad: 'Sarchimor', proceso: 'Lavado', notas: ['chocolate', 'nuez', 'cacao suave'], perfil: 'Balanceado · Cuerpo medio', desc: 'Prueba la dulzura del café de Córdoba en tamaño chico.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/16-1.png', badges: ['100% Veracruz', 'Tueste fresco', 'Proceso Lavado', 'Envío a todo México'] }, { id: 'robusta-1kg', slug: 'cafe-de-veracruz-robusta-1-kg', name: 'Café de Veracruz Robusta', size: '1 Kg', origin: 'Veracruz · Córdoba', originTag: 'robusta', price: 430, priceOld: null, unit: '1 Kg', sku: 'cafe-1-kg-9', stock: 13, finca: 'Region Córdoba', altura: 'Baja a media altitud', variedad: 'Robusta', proceso: 'Natural', notas: ['cacao intenso', 'madera', 'tierra húmeda', 'chocolate oscuro'], perfil: 'Alto cuerpo · Baja acidez · Taza fuerte', desc: 'Café Robusta de Córdoba, cultivado en zonas de baja a media altitud. Destaca por su fuerza, cuerpo y personalidad en taza. Ideal para espresso de cafetería.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/23-2.png', badges: ['100% Veracruz', 'Tueste fresco', 'Proceso Natural', 'Envío a todo México'] }, { id: 'robusta-500', slug: 'cafe-de-veracruz-robusta-500-g', name: 'Café de Veracruz Robusta', size: '500 g', origin: 'Veracruz · Córdoba', originTag: 'robusta', price: 315, priceOld: null, unit: '500 g', sku: 'cafe-1-kg-10', stock: 13, finca: 'Region Córdoba', altura: 'Baja a media altitud', variedad: 'Robusta', proceso: 'Natural', notas: ['cacao intenso', 'madera', 'tierra húmeda', 'chocolate oscuro'], perfil: 'Alto cuerpo · Baja acidez · Taza fuerte', desc: 'Intensidad y crema para espresso en casa.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/27.png', badges: ['100% Veracruz', 'Tueste fresco', 'Proceso Natural', 'Envío a todo México'] }, { id: 'robusta-250', slug: 'cafe-de-veracruz-robusta-250-g', name: 'Café de Veracruz Robusta', size: '250 g', origin: 'Veracruz · Córdoba', originTag: 'robusta', price: 200, priceOld: null, unit: '250 g', sku: 'cafe-1-kg-11', stock: 13, finca: 'Region Córdoba', altura: 'Baja a media altitud', variedad: 'Robusta', proceso: 'Natural', notas: ['cacao intenso', 'madera', 'chocolate oscuro'], perfil: 'Alto cuerpo · Baja acidez', desc: 'Cuerpo y crema — la dosis justa para probar el Robusta.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/29.png', badges: ['100% Veracruz', 'Tueste fresco', 'Proceso Natural', 'Envío a todo México'] }, { id: 'taza-clasica', slug: 'la-julia-clasica-12-oz', name: 'Taza La Julia Clásica', size: '12 oz', origin: 'Accesorio · Cerámica', originTag: 'accesorio', price: 110, priceOld: null, unit: '12 oz', sku: 'taza-12-oz', stock: 13, desc: 'Taza oficial de Café La Julia en cerámica de alta calidad. Capacidad de 12 oz (355 ml), ideal para americano, cappuccino o latte. Diseño ergonómico con el logotipo distintivo.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/33.png', badges: ['Cerámica premium', 'Apta microondas', 'Apta lavavajillas'] }, { id: 'taza-barista', slug: 'la-julia-clasica-12-oz-copia', name: 'Taza La Julia Barista', size: '16 oz', origin: 'Accesorio · Cerámica', originTag: 'accesorio', price: 140, priceOld: null, unit: '16 oz', sku: 'taza-12-oz-1', stock: 13, desc: 'Mayor capacidad (473 ml) para latte, cappuccino y amantes del café. Cerámica de alta calidad con el sello distintivo de La Julia.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/36.png', badges: ['Cerámica premium', 'Para latte & cappuccino', 'Apta lavavajillas'] }, { id: 'taza-intensa', slug: 'la-julia-intensa-26-oz', name: 'Taza La Julia Intensa', size: '26 oz', origin: 'Accesorio · Cerámica', originTag: 'accesorio', price: 250, priceOld: null, unit: '26 oz', sku: 'taza-12-oz-2', stock: 13, desc: 'Taza de gran capacidad (769 ml) para amantes del café sin límites. Ideal para oficina o jornadas largas. Cerámica de alta resistencia.', img: 'https://cafelajulia.com/wp-content/uploads/2026/03/35.png', badges: ['26 oz (769 ml)', 'Cerámica alta resistencia', 'Para oficina y jornadas largas'] } ]; // 3 posts reales del export WP const BLOG_POSTS = [ { slug: 'como-elegir-cafe-en-grano-segun-metodo-preparacion', title: 'Cómo elegir café en grano según tu método de preparación', excerpt: 'Si estás buscando el café ideal para preparar en casa, la elección del grano correcto puede transformar completamente tu experiencia.', date: '21 Abr 2026', read: '8 min', tag: 'Guía de método', cover: 'https://cafelajulia.com/wp-content/uploads/2026/03/20-1.png', body: [ { type: 'p', text: 'En México contamos con una riqueza cafetalera extraordinaria, y saber elegir café en grano según tu método de preparación es el primer paso para disfrutar una taza perfecta.' }, { type: 'h2', text: '¿Por qué importa el método de preparación?' }, { type: 'p', text: 'Cada método extrae el café de manera diferente: temperatura del agua, tiempo de contacto y presión determinan qué sabores se liberan del grano. Usar el café equivocado puede dar una taza amarga, aguada o sin carácter.' }, { type: 'h2', text: 'Para Espresso' }, { type: 'p', text: 'Elige café robusto y con cuerpo. Nuestro Robusta de Córdoba da crema densa y sabor intenso. Molienda fina, tueste medio-oscuro.' }, { type: 'h2', text: 'Para V60, Chemex o Goteo' }, { type: 'p', text: 'Opta por cafés con acidez brillante y notas complejas. El Chiapas de Concordia (Bourbon Rosado) destaca con sus notas cítricas y de panela. Molienda media.' }, { type: 'h2', text: 'Para Prensa Francesa' }, { type: 'p', text: 'Cuerpo redondo y dulzor. El Veracruz de Córdoba (Sarchimor) funciona excelente con sus notas de chocolate y nuez. Molienda gruesa.' } ] }, { slug: 'diferencias-cafe-chiapas-veracruz-puebla', title: 'Diferencias entre café de Chiapas, Veracruz y Puebla', excerpt: 'México es uno de los países productores de café más importantes del mundo, y su diversidad geográfica se traduce en perfiles de sabor únicos.', date: '21 Abr 2026', read: '6 min', tag: 'Orígenes', cover: 'https://cafelajulia.com/wp-content/uploads/2026/03/31.png', body: [ { type: 'p', text: 'Hoy te explicamos las diferencias entre los tres orígenes que trabajamos en Café La Julia: Chiapas, Veracruz y Puebla.' }, { type: 'h2', text: 'Café de Chiapas: Complejidad y acidez brillante' }, { type: 'p', text: 'Chiapas es la región cafetalera más grande de México, ubicada en las laderas de la Sierra Madre, entre 1,200 y 1,800 msnm. Nuestro lote de Concordia destaca por notas de chocolate, ralladura de naranja, panela y caramelo.' }, { type: 'h2', text: 'Café de Veracruz: Equilibrio y cuerpo' }, { type: 'p', text: 'Veracruz fue la primera región en cultivar café en México. Córdoba produce cafés balanceados con notas de chocolate, nuez y cacao — ideales para el día a día.' }, { type: 'h2', text: 'Café de Puebla: Suavidad y dulzor' }, { type: 'p', text: 'Tlacuilotepec, a 1,400 msnm, produce un café con notas florales de avellana, durazno y miel. Es el más suave y aromático de nuestra línea.' } ] }, { slug: 'hot-sale-cafe-arabigo', title: 'El impacto del cambio climático en el precio del café', excerpt: 'Si eres amante del buen café, es importante conocer por qué ha subido de precio y cómo los factores ambientales están afectando su producción.', date: '15 May 2024', read: '7 min', tag: 'Mercado', cover: 'https://cafelajulia.com/wp-content/uploads/2026/03/23-2.png', body: [ { type: 'p', text: 'El café es una de las bebidas más consumidas en el mundo, pero en los últimos meses, su precio ha alcanzado niveles históricos.' }, { type: 'h2', text: '¿Por qué ha subido el precio del café?' }, { type: 'p', text: 'Sequías en Brasil, heladas atípicas en países productores, logística internacional y especulación en los mercados de futuros han llevado al café arábiga a máximos no vistos en años.' }, { type: 'h2', text: 'El impacto del cambio climático' }, { type: 'p', text: 'Temperaturas más altas y lluvias irregulares afectan directamente la producción de café de especialidad. Los productores mexicanos enfrentan nuevos retos para mantener la calidad.' }, { type: 'h2', text: '¿Qué hacemos en Café La Julia?' }, { type: 'p', text: 'Trabajamos directamente con productores en Chiapas, Veracruz y Puebla para asegurar precio justo y consistencia, absorbiendo variaciones del mercado para ofrecerte café fresco al mejor precio.' } ] } ]; const CATEGORIES = [ { id: 'todos', label: 'Todos' }, { id: 'chiapas', label: 'Chiapas' }, { id: 'veracruz', label: 'Veracruz' }, { id: 'puebla', label: 'Puebla' }, { id: 'robusta', label: 'Robusta' }, { id: 'accesorio', label: 'Tazas' } ]; const MOLIENDAS = [ { id: 'grano', label: 'Grano entero', hint: 'Para moler en casa' }, { id: 'espresso', label: 'Molido espresso', hint: 'Fino · máquina o Moka' }, { id: 'goteo', label: 'Molido goteo / drip', hint: 'Medio · cafetera eléctrica' }, { id: 'prensa', label: 'Molido prensa francesa', hint: 'Grueso · inmersión' }, { id: 'chemex', label: 'Molido Chemex / V60', hint: 'Medio-grueso · filtro de papel' } ]; // Reseñas escritas de Google const TESTIMONIOS = [ { name: 'Samuel Kury', role: 'Google · 5★', text: 'Café La Julia es un verdadero tesoro para cualquier amante del café. Desde el momento en que entras, te envuelve un ambiente acogedor y tranquilo, con detalles que te hacen sentir en un rinconcito de Veracruz.', source: 'Google Reviews' }, { name: 'David Nobigrot', role: 'Google · 5★', text: 'Café La Julia de Veracruz es delicioso, te lo mandan en una linda caja y el café huele hasta antes de abrirla. Su sabor es riquísimo y la atención espectacular.', source: 'Google Reviews' } ]; // Testimoniales en video — YouTube shorts/clips conocidos en redes const VIDEO_TESTIMONIOS = [ { name: 'Isaac Reyes', handle: '@isaacmkt', role: 'Especialista en marketing digital', quote: 'El mejor café de Las Choapas, sin duda. Tres orígenes en la mesa y cada uno con su carácter.', videoId: 'fr5g6KTS48g', thumb: 'https://i.ytimg.com/vi/fr5g6KTS48g/hqdefault.jpg', bg: '#c8a878' }, { name: 'Paco "el de las empanadas"', handle: '@pacodelasempanadas', role: 'Referente de ventas en México', quote: 'Gracias amigo Francisco Ramírez por este café mexicano con nombre y apellido.', videoId: 'LxQFBEor4J8', thumb: 'https://i.ytimg.com/vi/LxQFBEor4J8/hqdefault.jpg', bg: '#6b4b3a' } ]; // Paquetes de suscripción — 389 / 689 / 889 const SUSCRIPCIONES = [ { id: 'iniciacion', name: 'Iniciación', price: 389, qty: '500 g · mensual', desc: 'Entra al mundo del café de especialidad. Rotamos origen cada mes para que pruebes lo mejor de México.', perks: [ '500 g de café de especialidad', 'Origen rotativo (Chiapas, Veracruz, Puebla)', 'Molienda a tu gusto', 'Envío gratis a toda la república', '10% en tu primera compra de accesorios' ] }, { id: 'estandar', name: 'Estándar', price: 689, qty: '1 kg · mensual', desc: 'El favorito. Café para toda la familia, todos los días, tostado hace menos de 7 días.', perks: [ '1 kg del origen que elijas', 'Cambia de perfil cuando quieras', 'Acceso a microlotes exclusivos', 'Envío gratis + empaque regalo', '15% en toda la tienda online', 'Comunidad privada La Julia (Telegram)' ], featured: true }, { id: 'premium', name: 'Premium', price: 889, qty: '1.5 kg · mensual', desc: 'Para exploradores. Dos perfiles distintos cada mes + beneficios de socio fundador.', perks: [ '500 g tueste medio + 500 g oscuro + 500 g microlote del mes', 'Acceso anticipado a nuevas cosechas', 'Cata virtual mensual con el tostador', 'Regalo sorpresa trimestral (taza, merch, libro)', '20% en toda la tienda + accesorios', 'Envío exprés incluido', 'Miembro fundador: atención directa por WhatsApp' ] } ]; // Beneficios de la comunidad (club / suscriptores) const CLUB_BENEFICIOS = [ { t: 'Descuentos de socio', d: 'Hasta 20% off en toda la tienda para suscriptores activos.' }, { t: 'Comunidad privada', d: 'Canal de Telegram para catas, recetas y lanzamientos anticipados.' }, { t: 'Microlotes exclusivos', d: 'Acceso antes que nadie a cosechas limitadas de nuestros productores.' }, { t: 'Catas virtuales', d: 'Una vez al mes con el tostador, método y maridaje en vivo.' }, { t: 'Envío gratis siempre', d: 'Sin mínimos ni letras chiquitas. A toda la república mexicana.' }, { t: 'Regalos sorpresa', d: 'Taza, libro, merch — cada trimestre algo nuevo para los miembros.' } ]; const FAQS = [ { q: '¿Cuánto tarda el envío?', a: 'Los pedidos se procesan en 1–2 días hábiles. Tiempos de entrega: CDMX y área metropolitana 2–3 días hábiles; ciudades principales (Guadalajara, Monterrey, Puebla) 3–5 días; resto del país 5–7 días. Recibirás un número de rastreo por correo cuando se despache tu pedido.' }, { q: '¿Puedo elegir el grado de molido?', a: '¡Sí! Al agregar un café al carrito, puedes seleccionar: Grano entero, Molido para espresso (fino), Molido para goteo/drip (medio), Molido para prensa francesa (grueso) o Molido para Chemex/V60 (medio-grueso).' }, { q: '¿Los granos vienen recién tostados?', a: 'Sí. Tostamos cada semana — nunca tenemos inventario viejo. Cuando recibes tu pedido, el café tiene como máximo 7–10 días desde la fecha de tueste. Cada bolsa incluye la fecha de tueste impresa. Recomendamos consumir dentro de las 3–4 semanas siguientes.' }, { q: '¿Tienen programa de mayoreo para empresas?', a: 'Sí, contamos con un Programa B2B para cafeterías, restaurantes, hoteles y oficinas: precios especiales desde 5 kg/mes, muestra gratuita antes del primer pedido, facturación con RFC, crédito disponible, capacitación de barista en pedidos mayores, asesoría en selección de origen y molienda.' }, { q: '¿Cómo funciona el Club Café La Julia?', a: 'Es nuestro programa de fidelidad gratuito. Acumulas 1 punto por cada $10 MXN de compra. 200 puntos = $50 MXN de descuento. En tu cumpleaños ganas el doble. Los miembros tienen acceso anticipado a nuevos orígenes y reciben 10% de descuento en la primera compra al registrarse.' }, { q: '¿Puedo devolver o cambiar mi pedido?', a: 'Aceptamos devoluciones o cambios dentro de los 7 días naturales siguientes a la recepción, siempre que el producto esté en perfecto estado y sin abrir. Si el café llegó dañado o hay un error en tu pedido, lo resolvemos sin costo. Escríbenos a ventas@cafelajulia.com con tu número de pedido.' } ]; const CONTACT = { phone: '9231171040', phoneDisplay: '923-117-1040', whatsapp: '+52 923 117 1040', whatsappDigits: '529231171040', email: 'ventas@cafelajulia.com', address: 'Blvd. Antonio M. Quirazco 2146', city: 'Las Choapas, Veracruz 96980', appUrl: 'https://cafe-la-julia-fidelizacion.web.app' }; // Lucide-style inline SVGs const Icon = ({ name, size = 20, className = '', style = {} }) => { const common = { width: size, height: size, viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: 1.8, strokeLinecap: 'round', strokeLinejoin: 'round', 'aria-hidden': true, className, style }; const paths = { home: <>, clock: <>, check: <>, truck: <>, bag: <>, search: <>, user: <>, ig: <>, fb: , yt: <>, tiktok: , wa: , arrow: <>, arrowl: <>, close: <>, plus: <>, minus: , play: , coffee: <>, chat: <>, sparkle:<>, send: <>, card: <>, lock: <>, mapPin: <>, phone: , mail: <>, star: , gift: <>, leaf: <>, flame: , scale: <>, box: <>, heart: , cup: <>, menu: <>, shield: , zap: , chevron:, }; return {paths[name] || null}; }; Object.assign(window, { PRODUCTS, BLOG_POSTS, CATEGORIES, MOLIENDAS, TESTIMONIOS, VIDEO_TESTIMONIOS, SUSCRIPCIONES, CLUB_BENEFICIOS, FAQS, CONTACT, Icon }); // Café La Julia — Carrito, Checkout, Suscripción, Cafeterías, FAQ // CARRITO ─────────────────────────────────────────────────────────────── const Carrito = ({ items, onNav, onQty, onAdd, products }) => { const subtotal = items.reduce((s,i)=>s+i.price*i.qty,0); const ship = subtotal >= 500 || subtotal === 0 ? 0 : 99; const total = subtotal + ship; const remaining = Math.max(0, 500 - subtotal); const recs = (products||[]).filter(p => !items.some(i=>i.id===p.id)).slice(0,3); if (items.length === 0) { return (

Tu carrito está vacío

Descubre los cafés tostados esta semana y empieza tu ritual matutino.

{e.preventDefault();onNav('tienda')}}>Explorar cafés
); } return (

Tu carrito

{items.length} producto{items.length!==1?'s':''} · {items.reduce((s,i)=>s+i.qty,0)} unidad{items.reduce((s,i)=>s+i.qty,0)!==1?'es':''}

{remaining > 0 && (
Agrega ${remaining} MXN más para envío gratis
)} {remaining === 0 && (
Envío gratis desbloqueado
)}
ProductoCantidadSubtotal
{items.map(i=>(
{i.name}e.target.style.display='none'}/>
{i.name}
{i.origin} · {i.unit}
${i.price} MXN
${i.price*i.qty}
))}
{recs.length > 0 && (

Completa tu pedido

{recs.map(p=>(
onAdd(p)}>
{p.name}e.target.style.display='none'}/>

{p.origin}

{p.name} — {p.size}

${p.price} MXN
))}
)}
); }; // CHECKOUT ───────────────────────────────────────────────────────────── const Checkout = ({ items, onNav, onComplete }) => { const [step, setStep] = React.useState(1); const [form, setForm] = React.useState({ email:'', nombre:'', apellido:'', tel:'', calle:'', num:'', col:'', ciudad:'', estado:'', cp:'', envio:'estandar', pago:'tarjeta', card:'', exp:'', cvc:'', cardName:'' }); const f = (k,v) => setForm({...form,[k]:v}); const subtotal = items.reduce((s,i)=>s+i.price*i.qty,0); const shipCost = form.envio==='express'?199:(subtotal>=500?0:99); const total = subtotal + shipCost; if (items.length === 0) { return (
); } const next = () => setStep(Math.min(3, step+1)); const prev = () => setStep(Math.max(1, step-1)); return (

Finalizar compra

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

Información de contacto

f('email',e.target.value)} placeholder="tu@correo.com"/>
f('tel',e.target.value)} placeholder="55 1234 5678"/>

Dirección de envío

f('nombre',e.target.value)}/>
f('apellido',e.target.value)}/>
f('calle',e.target.value)}/>
f('num',e.target.value)}/>
f('col',e.target.value)}/>
f('ciudad',e.target.value)}/>
f('cp',e.target.value)} maxLength="5"/>

Método de envío

{[ { id:'estandar', n:'Estándar', d:'5–7 días hábiles', p: subtotal>=500?'Gratis':'$99' }, { id:'express', n:'Express', d:'2–3 días hábiles', p:'$199' } ].map(o=>( ))}
)} {step===2 && (

Método de pago

{[ { id:'tarjeta', n:'Tarjeta de crédito o débito', icon:'card' }, { id:'oxxo', n:'Pago en OXXO', icon:'box' }, { id:'transfer',n:'Transferencia SPEI', icon:'check' } ].map(o=>( ))}
{form.pago==='tarjeta' && (
f('card',e.target.value)} placeholder="1234 5678 9012 3456"/>
f('exp',e.target.value)} placeholder="MM/AA"/>
f('cvc',e.target.value)} placeholder="123" maxLength="4"/>
f('cardName',e.target.value)}/>
Pago seguro · SSL · PCI DSS
)} {form.pago==='oxxo' && (
Al confirmar, recibirás una referencia para pagar en cualquier OXXO en las próximas 24 horas.
)} {form.pago==='transfer' && (
Al confirmar, recibirás los datos bancarios para SPEI. Procesamos en cuanto confirmemos tu pago.
)}
)} {step===3 && (

Revisar y confirmar

{form.nombre} {form.apellido}
{form.calle} {form.num}, {form.col}
{form.ciudad}, {form.estado} {form.cp}
{form.tel} · {form.email}

{form.pago==='tarjeta' && `Tarjeta terminada en ${form.card.slice(-4) || '····'}`}{form.pago==='oxxo' && 'Pago en OXXO'}{form.pago==='transfer' && 'Transferencia SPEI'}

)}
{step>1 && } {step<3 && } {step===3 && }
); }; // CONFIRMACIÓN ───────────────────────────────────────────────────────── const OrderConfirm = ({ onNav }) => { const orderId = 'LJ-' + Math.floor(100000 + Math.random()*900000); return (

¡Pedido confirmado!

Gracias por comprar en Café La Julia.

Número de pedido · {orderId}

Recibirás un correo con los detalles de tu pedido.
Tostamos fresco. Tu café se tuesta en los próximos 1–2 días hábiles.
Envío. Te enviaremos el número de rastreo cuando despachemos.
); }; // SUSCRIPCIÓN ───────────────────────────────────────────────────────── const Suscripcion = ({ onNav }) => { const [plan, setPlan] = React.useState('estandar'); const selected = SUSCRIPCIONES.find(s=>s.id===plan); const steps = [ { n:1, t:'Elige tu plan', d:'Tamaño y frecuencia' }, { n:2, t:'Perfil de sabor', d:'Claro, medio u oscuro' }, { n:3, t:'Recibe en casa', d:'Cada 30 días, envío gratis' }, { n:4, t:'Pausa o cancela', d:'Desde tu cuenta, sin preguntas' } ]; return ( <>
Planes

Elige el tuyo

{SUSCRIPCIONES.map(s=>(
setPlan(s.id)}> {s.featured &&
Más popular
}

{s.name}

{s.qty} al mes
${s.price} MXN / mes

{s.desc}

    {s.perks.map((p,i)=>(
  • {p}
  • ))}
))}
Tu elección

{selected.name} · ${selected.price} MXN/mes

Puedes cambiar origen, tueste o frecuencia desde tu cuenta cuando quieras.

{e.preventDefault();onNav('checkout')}}>Suscribirme ahora →
Cómo funciona

4 pasos, café siempre fresco

{steps.map(s=>(
{String(s.n).padStart(2,'0')}

{s.t}

{s.d}

))}
Preguntas frecuentes

Sobre la suscripción

{[ { q:'¿Puedo cambiar el café cada mes?', a:'Sí. Desde tu cuenta puedes elegir origen (Chiapas, Veracruz o Puebla) y tueste (medio o oscuro) cada mes, antes del día 25.' }, { q:'¿Cuándo llega mi caja?', a:'Enviamos entre los días 1 y 3 de cada mes. Recibirás tu pedido entre 3 y 7 días hábiles después.' }, { q:'¿Puedo pausar o cancelar?', a:'Sí, cuando quieras, sin costo ni preguntas. Pausa temporalmente o cancela desde tu cuenta.' }, { q:'¿Qué descuento tengo vs. compra única?', a:'Los suscriptores pagan entre 10% y 15% menos que precio de tienda, y el envío siempre es gratis.' } ].map((it,i)=>())}
); }; // CAFETERÍAS (B2B) ───────────────────────────────────────────────────── const Cafeterias = () => { const [form, setForm] = React.useState({ nombre:'', negocio:'', email:'', tel:'', ciudad:'', tipo:'', volumen:'', mensaje:'' }); const [sent, setSent] = React.useState(false); const f = (k,v) => setForm({...form,[k]:v}); const beneficios = [ { icon:'scale', t:'Precios al mayoreo', d:'Hasta 30% menos que precio retail. Cotización personalizada según volumen.' }, { icon:'gift', t:'Muestra gratuita', d:'Probamos contigo antes del primer pedido. Sin compromiso de compra.' }, { icon:'card', t:'Facturación y crédito', d:'Facturación con RFC. Crédito a 15 o 30 días para cuentas constantes.' }, { icon:'cup', t:'Capacitación barista', d:'Incluida en pedidos mayores. Técnica, extracción y presentación.' }, { icon:'truck', t:'Logística constante', d:'Entregas programadas semanal o quincenal. Stock siempre disponible.' }, { icon:'star', t:'Asesoría de menú', d:'Te ayudamos a elegir origen, molienda y perfil según tu concepto.' } ]; return ( <>
Beneficios

Todo lo que incluye

Trabajamos con +80 cafeterías, restaurantes y hoteles en México. Sin contratos exclusivos.

{beneficios.map((b,i)=>(

{b.t}

{b.d}

))}
Volumen mínimo

Desde 5 kg al mes

Nuestro programa B2B comienza con pedidos mensuales de 5 kg. A partir de ahí, los precios escalan por volumen.

5 – 15 kg15% descuento
15 – 40 kg22% descuento
+40 kg30% descuento
e.target.style.display='none'}/>
Solicita tu muestra

Probemos juntos

Cuéntanos de tu negocio y te enviamos una muestra gratuita de nuestros tres orígenes para que elijas el que mejor encaja con tu concepto.

  • Muestra de 250 g por origen (sin costo)
  • Cotización personalizada en 24 hrs
  • Llamada de asesoría con un tostador
{e.preventDefault();setSent(true);}}> {sent ? (

Solicitud enviada

Te contactaremos en menos de 24 horas con tu cotización.

) : ( <>

Solicitar muestra gratuita

f('nombre',e.target.value)} required/>
f('negocio',e.target.value)} required/>
f('email',e.target.value)} required/>
f('tel',e.target.value)} required/>
f('ciudad',e.target.value)} required/>