"use client" import { useState, useEffect, useRef } from "react" import { motion, AnimatePresence } from "framer-motion" import { Store, ChevronDown, Check, Settings } from "lucide-react" import { useRouter } from "next/navigation" import { useTheme } from "@/components/ThemeProvider" interface StoreData { id: string businessName: string shopifyDomain: string isActive: boolean } export default function StoreSwitcher() { const router = useRouter() const [stores, setStores] = useState([]) const [isOpen, setIsOpen] = useState(false) const [loading, setLoading] = useState(false) const dropdownRef = useRef(null) const { theme } = useTheme() const isLight = theme === "light" useEffect(() => { fetchStores() // Listen for store updates (when stores are added/deleted) const handleStoreUpdate = () => { fetchStores() } window.addEventListener("storeUpdated", handleStoreUpdate) return () => { window.removeEventListener("storeUpdated", handleStoreUpdate) } }, []) // Close dropdown when clicking outside useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false) } } if (isOpen) { document.addEventListener("mousedown", handleClickOutside) } return () => { document.removeEventListener("mousedown", handleClickOutside) } }, [isOpen]) const fetchStores = async () => { try { const res = await fetch("/api/stores") if (res.ok) { const data = await res.json() setStores(data.stores || []) } } catch (err) { console.error("Failed to fetch stores:", err) } } const activeStore = stores.find(s => s.isActive) const handleSwitch = async (storeId: string) => { if (loading) return setLoading(true) try { const res = await fetch("/api/stores/switch", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ storeId }) }) if (res.ok) { window.location.reload() } } catch (err) { console.error("Failed to switch store:", err) } finally { setLoading(false) } } if (stores.length === 0) return null return (
{isOpen && ( <> setIsOpen(false)} />

Your Stores

{stores.map((store) => ( ))}
)}
) }