import { useState } from 'react' import { Star } from 'lucide-react' import { Modal } from '@/components/common/Modal' import { analyticsApi } from '@/api' import { cn } from '@/lib/utils' import { markSessionRated } from './csatUtils' interface CSATModalProps { isOpen: boolean onClose: () => void sessionId: string } export function CSATModal({ isOpen, onClose, sessionId }: CSATModalProps) { const [rating, setRating] = useState(0) const [hoveredRating, setHoveredRating] = useState(0) const [comment, setComment] = useState('') const [submitting, setSubmitting] = useState(false) const handleSubmit = async () => { if (rating === 0 || submitting) return setSubmitting(true) try { await analyticsApi.rateSession(sessionId, rating, comment || undefined) markSessionRated(sessionId) onClose() } catch { // Silently fail — still close onClose() } finally { setSubmitting(false) } } const handleSkip = () => { markSessionRated(sessionId) onClose() } return (

Your feedback helps flow authors improve troubleshooting paths.

{/* Star rating */}
{[1, 2, 3, 4, 5].map((value) => ( ))}
{/* Comment */}