"use client"; import { MapPin } from "lucide-react"; import { useEffect, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; import { ciudades, ciudadesPorDepartamento, departamentos } from "@/lib/data/colombia"; import { useLocationStore } from "@/store/location-store"; const selectClass = "h-11 w-full rounded-xl border border-slate-200 bg-white px-3 text-sm text-slate-950 outline-none focus:border-ari-coral focus:ring-4 focus:ring-ari-coral/15"; // "Enviar a · " del header (inspirado en el bloque de // ubicacion de Amazon). La ciudad elegida se reusa en el checkout. export function LocationPicker({ firstName }: { firstName: string | null }) { const departmentId = useLocationStore((state) => state.departmentId); const cityId = useLocationStore((state) => state.cityId); const hydrated = useLocationStore((state) => state.hasHydrated); const setLocation = useLocationStore((state) => state.setLocation); const [open, setOpen] = useState(false); const [draftDepartment, setDraftDepartment] = useState(null); const [draftCity, setDraftCity] = useState(null); const containerRef = useRef(null); const city = hydrated && cityId ? ciudades.find((item) => item.id === cityId)?.name : undefined; useEffect(() => { if (!open) return; setDraftDepartment(departmentId); setDraftCity(cityId); function handlePointerDown(event: PointerEvent) { if (containerRef.current && !containerRef.current.contains(event.target as Node)) setOpen(false); } function handleKeyDown(event: KeyboardEvent) { if (event.key === "Escape") setOpen(false); } document.addEventListener("pointerdown", handlePointerDown); document.addEventListener("keydown", handleKeyDown); return () => { document.removeEventListener("pointerdown", handlePointerDown); document.removeEventListener("keydown", handleKeyDown); }; }, [open, departmentId, cityId]); const draftCities = draftDepartment ? ciudadesPorDepartamento(draftDepartment) : []; return (
{open && (

¿A dónde enviamos?

Hacemos envíos a toda Colombia. Tu ciudad queda lista en el checkout.

)}
); }