import { useState, useEffect } from "react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { useAuth } from "@/hooks/useAuth"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { Badge } from "@/components/ui/badge"; import { useToast } from "@/hooks/use-toast"; import { LoadingSpinner } from "@/components/loading-spinner"; import { apiRequest } from "@/lib/queryClient"; import type { Video } from "@shared/schema"; import { Shield, Edit, Upload, Search, Filter, Save, X, Sparkles, Loader2 } from "lucide-react"; export default function AdminPage() { const { user, isLoading: authLoading, isAuthenticated, isAdmin } = useAuth(); const { toast } = useToast(); const queryClient = useQueryClient(); const [search, setSearch] = useState(""); const [selectedVideo, setSelectedVideo] = useState