From cda25dea2ea086cdb183a987b697db239c49ba41 Mon Sep 17 00:00:00 2001 From: Cristian Felipe Cruz Buitron Date: Sat, 12 Sep 2026 02:55:24 +0000 Subject: [PATCH] =?UTF-8?q?feat(ecommerce):=20p=C3=A1ginas=20reales=20de?= =?UTF-8?q?=20Env=C3=ADos=20y=20Contacto=20en=20el=20footer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El footer "Ayuda" no tenía contenido real -- los 4 links apuntaban a /catalog. Se agregan dos páginas nuevas con información real: - /envios: transportadoras reales de EnvíoClick (Coordinadora, Envía, TCC, Rappi, Pibox -- confirmadas en una cotización real, ver ADR 0010 §2) y cómo se calcula el costo. - /contacto: WhatsApp real (+57 301 613 8155, mismo número ya usado en el fallback de checkout) y correo contacto@cruzcloud.net (reenviado por Cloudflare Email Routing -- configuración manual de DNS pendiente del lado del usuario, fuera de alcance de este cambio). "Preguntas frecuentes" y "Cambios" quedan sin contenido real definido todavía, apuntando a /catalog como antes. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01THZFwPzrwv6VAbuwmaf5vR --- workloads/ecommerce/app/contacto/page.tsx | 63 ++++++++++++++++++ workloads/ecommerce/app/envios/page.tsx | 66 +++++++++++++++++++ .../ecommerce/components/layout/footer.tsx | 26 +++++++- 3 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 workloads/ecommerce/app/contacto/page.tsx create mode 100644 workloads/ecommerce/app/envios/page.tsx diff --git a/workloads/ecommerce/app/contacto/page.tsx b/workloads/ecommerce/app/contacto/page.tsx new file mode 100644 index 0000000..32ab4bb --- /dev/null +++ b/workloads/ecommerce/app/contacto/page.tsx @@ -0,0 +1,63 @@ +import type { Metadata } from "next"; +import { Mail, MapPin, MessageCircle } from "lucide-react"; +import { Button } from "@/components/ui/button"; + +export const metadata: Metadata = { title: "Contacto | ARI Shopping" }; + +// Numero real confirmado en vivo (probando el boton "Confirmar por +// WhatsApp" del checkout con navegador real): mismo canal que ya usan +// los clientes para confirmar pedidos, consistencia a proposito. +const WHATSAPP_URL = "https://wa.me/573016138155"; +// Correo corporativo nuevo (contacto@cruzcloud.net -> reenviado por +// Cloudflare Email Routing a la casilla real) -- ver nota de +// implementacion en ADR 0010 para el paso manual de DNS pendiente. +const CONTACT_EMAIL = "contacto@cruzcloud.net"; + +export default function ContactoPage() { + return ( +
+ Ayuda +

Contacto

+

+ ¿Tenés una pregunta sobre tu pedido, un producto o un cambio? Escribinos, te respondemos lo antes posible. +

+ +
+ + +
+

WhatsApp

+

+57 301 613 8155

+
+
+ + +
+

Correo

+

{CONTACT_EMAIL}

+
+
+
+ +
+ + Despachamos desde Bogotá D.C., Colombia +
+ + +
+ ); +} diff --git a/workloads/ecommerce/app/envios/page.tsx b/workloads/ecommerce/app/envios/page.tsx new file mode 100644 index 0000000..562f23c --- /dev/null +++ b/workloads/ecommerce/app/envios/page.tsx @@ -0,0 +1,66 @@ +import type { Metadata } from "next"; +import { Calculator, Clock, MapPinned, Truck } from "lucide-react"; + +export const metadata: Metadata = { title: "Envíos | ARI Shopping" }; + +// ADR 0010 §2: el costo de envio se calcula en vivo con EnvioClick (peso + +// direccion), no es un valor fijo -- el copy de abajo describe ese +// comportamiento real, no un placeholder. Transportadoras reales +// confirmadas en una cotizacion en vivo contra la API de EnvioClick +// (PIBOX, COORDINADORA, ENVIA, RAPPI, TCC) -- EnvioClick cotiza entre +// ellas y el sistema toma automaticamente la mas economica por pedido. +const CARRIERS = ["Coordinadora", "Envía", "TCC", "Rappi", "Pibox"]; + +export default function EnviosPage() { + return ( +
+ Ayuda +

Envíos

+

+ Hacemos envíos a nivel nacional desde nuestra bodega en Bogotá D.C. +

+ +
+
+ +

Costo calculado en tiempo real

+

+ El valor del envío se calcula automáticamente según el peso de tu pedido y la dirección de entrega — + lo ves exacto en el checkout antes de pagar, nunca es una tarifa a ciegas. +

+
+
+ +

Transportadoras aliadas

+

+ Cotizamos automáticamente entre {CARRIERS.join(", ")} y asignamos la tarifa más conveniente para cada + pedido. +

+
+
+ +

Tiempos de entrega

+

+ Varían según la transportadora asignada y tu ciudad — una vez despachado tu pedido te compartimos el + número de guía para hacerle seguimiento. +

+
+
+ +

Cobertura

+

+ Envíos a todo el territorio nacional colombiano desde nuestra bodega en Bogotá D.C. +

+
+
+ +

+ ¿Tenés dudas puntuales sobre un pedido? Escribinos por{" "} + + nuestros canales de contacto + + . +

+
+ ); +} diff --git a/workloads/ecommerce/components/layout/footer.tsx b/workloads/ecommerce/components/layout/footer.tsx index 3436fb3..99d7f84 100644 --- a/workloads/ecommerce/components/layout/footer.tsx +++ b/workloads/ecommerce/components/layout/footer.tsx @@ -1,10 +1,30 @@ import Link from "next/link"; import { Facebook, Instagram, MessageCircle } from "lucide-react"; +// "Envíos" y "Contacto" ya tienen paginas reales (app/envios, +// app/contacto -- contenido real: transportadoras de EnvioClick, +// WhatsApp/correo reales). "Preguntas frecuentes" y "Cambios" todavia +// no tienen contenido real decidido -- quedan apuntando a /catalog +// (no rotas, pero tampoco resueltas) hasta que se defina que van a +// decir. +const HELP_LINKS = [ + { label: "Preguntas frecuentes", href: "/catalog" }, + { label: "Envíos", href: "/envios" }, + { label: "Cambios", href: "/catalog" }, + { label: "Contacto", href: "/contacto" }, +]; + +const SHOP_LINKS = [ + { label: "Novedades", href: "/catalog" }, + { label: "Juguetes", href: "/catalog" }, + { label: "Mochilas", href: "/catalog" }, + { label: "Regalos", href: "/catalog" }, +]; + export function Footer() { - return
ARI shopping{/* eslint-disable-line @next/next/no-img-element -- vector propio, next/image no optimiza SVG sin habilitar dangerouslyAllowSVG */}

Tesoros para cada aventura.

Newsletter

Recibe lanzamientos y promociones especiales.

© 2026 ARI Shopping · Frontend headless v4.1 · GitOps
; + return
ARI shopping{/* eslint-disable-line @next/next/no-img-element -- vector propio, next/image no optimiza SVG sin habilitar dangerouslyAllowSVG */}

Tesoros para cada aventura.

Newsletter

Recibe lanzamientos y promociones especiales.

© 2026 ARI Shopping · Frontend headless v4.1 · GitOps
; } -function FooterColumn({ title, links }: { title: string; links: string[] }) { - return

{title}

{links.map((link) => {link})}
; +function FooterColumn({ title, links }: { title: string; links: { label: string; href: string }[] }) { + return

{title}

{links.map((link) => {link.label})}
; }