"use client"; import { DoorOpen, Loader2, Megaphone, MessageSquare, Shield, Volume2, VolumeX, Zap, } from "lucide-react"; import { useState } from "react"; import { broadcastAlert, quickAlert, quickKick, quickMute, quickRoomKick, quickUnmute, } from "@/actions/moderation"; import { useConfirmDialog } from "@/components/admin/confirm-dialog"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { useServerAction } from "@/hooks/use-server-action"; export function ModActionsClient() { const { run, isPending } = useServerAction(); const { confirm, dialog: confirmDialog } = useConfirmDialog(); const [userId, setUserId] = useState(""); const [muteDuration, setMuteDuration] = useState("10"); const [alertMessage, setAlertMessage] = useState(""); const [roomId, setRoomId] = useState(""); const [broadcastMsg, setBroadcastMsg] = useState(""); const uid = parseInt(userId, 10); const rid = parseInt(roomId, 10); async function handleKick() { const ok = await confirm({ title: "Kick user", description: `Disconnect user #${uid}?`, confirmLabel: "Kick", }); if (!ok) return; run(() => quickKick({ userId: uid }), { successMessage: "User disconnected", }); } async function handleRoomKick() { const ok = await confirm({ title: "Kick all from room", description: `Kick every user from room #${rid}?`, confirmLabel: "Kick all", }); if (!ok) return; run(() => quickRoomKick({ roomId: rid }), { successMessage: "All users kicked from room", }); } async function handleHotelBroadcast() { const ok = await confirm({ title: "Hotel-wide alert", description: "Send this alert to everyone in the hotel?", confirmLabel: "Send", variant: "default", }); if (!ok) return; run( () => broadcastAlert({ message: broadcastMsg.trim(), type: "hotel", }), { successMessage: "Hotel alert sent!", onSuccess: () => setBroadcastMsg(""), }, ); } return (