import { useState } from 'react'; import { supabase } from '@/integrations/supabase/client'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { toast } from '@/hooks/use-toast'; import { Star } from 'lucide-react'; interface ReviewFormProps { userId: string; productId?: string; type: 'consulting' | 'bootcamp' | 'webinar' | 'general'; onSuccess?: () => void; } export function ReviewForm({ userId, productId, type, onSuccess }: ReviewFormProps) { const [rating, setRating] = useState(0); const [hoverRating, setHoverRating] = useState(0); const [title, setTitle] = useState(''); const [body, setBody] = useState(''); const [submitting, setSubmitting] = useState(false); const handleSubmit = async () => { if (rating === 0) { toast({ title: 'Error', description: 'Pilih rating terlebih dahulu', variant: 'destructive' }); return; } if (!title.trim()) { toast({ title: 'Error', description: 'Judul tidak boleh kosong', variant: 'destructive' }); return; } setSubmitting(true); const { error } = await supabase.from('reviews').insert({ user_id: userId, product_id: productId || null, type, rating, title: title.trim(), body: body.trim(), is_approved: false, }); if (error) { toast({ title: 'Error', description: 'Gagal mengirim ulasan', variant: 'destructive' }); } else { toast({ title: 'Berhasil', description: 'Ulasan Anda akan ditinjau oleh admin' }); setRating(0); setTitle(''); setBody(''); onSuccess?.(); } setSubmitting(false); }; return ( Beri Ulasan
{[1, 2, 3, 4, 5].map((i) => ( ))}
setTitle(e.target.value)} placeholder="Ringkasan pengalaman Anda" className="border-2" maxLength={100} />