'use client'; import { useState } from 'react'; import { PaymentElement, useStripe, useElements } from '@stripe/react-stripe-js'; import { orderStore } from '@/store/useOrderStore'; export function PaymentStep() { const stripe = useStripe(); const elements = useElements(); const [errorMsg, setErrorMsg] = useState(''); const [isLoading, setIsLoading] = useState(false); const handleSubmit = async () => { if (!stripe || !elements) return; setIsLoading(true); setErrorMsg(''); // Validate the payment element first const { error: submitError } = await elements.submit(); if (submitError) { setErrorMsg(submitError.message || 'Validation failed'); setIsLoading(false); return; } // Move to review — actual confirmation happens on "Place Order" orderStore.getState().setPayment({ status: 'idle' }); orderStore.getState().setStep('review'); setIsLoading(false); }; return (