import { useState } from "react"; import { Check, Loader2 } from "lucide-react"; import { useShopifyProducts } from "@/hooks/useShopifyProducts"; import { useCartStore } from "@/stores/cartStore"; import { toast } from "sonner"; const planDetails = [ { name: "Liten", kgPerWeek: "3 kg", priceWeekExclVat: "1 350", employeeRecommendation: "1–10 anställda", features: [ "3 kg kakor per vecka", "Veckoleverans", "Betala direkt eller med Klarna", ], shopifyHandle: "liten-kakabonnemang-3-kg-vecka", isPremium: false, }, { name: "Mellan", kgPerWeek: "5 kg", priceWeekExclVat: "2 250", employeeRecommendation: "10–25 anställda", features: [ "5 kg kakor per vecka", "Veckoleverans", "Betala direkt eller med Klarna", ], shopifyHandle: "mellan-kakabonnemang-5-kg-vecka", isPremium: false, }, { name: "Stor", kgPerWeek: "10 kg", priceWeekExclVat: "4 500", employeeRecommendation: "25+ anställda", features: [ "10 kg kakor per vecka", "Veckoleverans", "Betala direkt eller med Klarna", "Prioriterad leverans", ], shopifyHandle: "stor-kakabonnemang-10-kg-vecka", isPremium: true, }, ]; const PlansSection = () => { const [selectedPlan, setSelectedPlan] = useState(""); const [checkoutLoading, setCheckoutLoading] = useState(false); const { products, isLoading: productsLoading } = useShopifyProducts("product_type:Abonnemang"); const { addItem, clearCart, isLoading: cartLoading } = useCartStore(); const handleSelectPlan = async (plan: typeof planDetails[0]) => { // Find the matching Shopify product const shopifyProduct = products.find(p => p.node.handle === plan.shopifyHandle); if (!shopifyProduct) { toast.error("Kunde inte hitta produkten"); return; } const variant = shopifyProduct.node.variants.edges[0]?.node; if (!variant) { toast.error("Ingen variant tillgänglig"); return; } setCheckoutLoading(true); setSelectedPlan(plan.name); try { // Clear any existing cart items first for a clean order clearCart(); await addItem({ product: shopifyProduct, variantId: variant.id, variantTitle: variant.title, price: variant.price, quantity: 1, selectedOptions: variant.selectedOptions || [], }); toast.success(`${plan.name} tillagt i varukorgen`, { description: "Klicka på varukorgen för att gå till betalning", }); } catch (error) { console.error('Add to cart error:', error); toast.error("Något gick fel"); } finally { setCheckoutLoading(false); } }; const isLoading = productsLoading || cartLoading || checkoutLoading; return (
{/* Section header */}

Våra Abonnemang

Välj det abonnemang som passar ert företag bäst

{/* Plans grid */}
{planDetails.map((plan, index) => (
{/* Plan header */}

{plan.name}

{plan.employeeRecommendation}

{/* Price info */}
{plan.kgPerWeek}/vecka
{plan.priceWeekExclVat} kr/v
{/* Features - hidden on mobile */}
    {plan.features.map((feature, i) => (
  • {feature}
  • ))}
{/* CTA Button - always at bottom */}
))}
{/* Satisfaction guarantee */}

Alltid med fullständig nöjdhetsgaranti

); }; export default PlansSection;