'use client'; import { useState } from 'react'; import { X, Loader2 } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import toast from 'react-hot-toast'; import StarRating from './StarRating'; import { addCustomerRating } from '../../utils/ratings'; const RatingField = ({ label, value, onChange }) => (
{value === 0 &&

{/* required text handled in parent */}

}
); export default function CustomerRatingForm({ reservationId, onSuccess, onCancel }) { const { t } = useTranslation(); const [furnitureIntegrityRating, setFurnitureIntegrityRating] = useState(0); const [termsComplianceRating, setTermsComplianceRating] = useState(0); const [renterBehaviorRating, setRenterBehaviorRating] = useState(0); const [comment, setComment] = useState(''); const [loading, setLoading] = useState(false); const validate = () => { if (furnitureIntegrityRating === 0) return t('ratings.furnitureIntegrity'); if (termsComplianceRating === 0) return t('ratings.termsCompliance'); if (renterBehaviorRating === 0) return t('ratings.renterBehavior'); return null; }; const handleSubmit = async (e) => { e.preventDefault(); const missing = validate(); if (missing) { toast.error(t('ratings.pleaseRate') + ': ' + missing); return; } setLoading(true); try { await addCustomerRating({ reservationId, furnitureIntegrityRating, termsComplianceRating, renterBehaviorRating, comment: comment.trim() || null, }); toast.success(t('ratings.customerRatingSubmitted')); onSuccess?.(); } catch (err) { toast.error(t('ratings.submitError')); } finally { setLoading(false); } }; return (

{t('ratings.customerRating')}

{onCancel && ( )}