import { useState, useRef } from "react"; import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "@/components/ui/dialog"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Search, Upload, FileText, Video, Link2, Download, Trash2, CheckCircle2, Clock, XCircle, Loader2, BookOpen, Music, Image, Library, Plus, CalendarDays, X, } from "lucide-react"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { resourcesService } from "@/services/resources.service"; import { coursewareService } from "@/services/courseware.service"; import { taxonomyService } from "@/services/taxonomy.service"; import { useToast } from "@/hooks/use-toast"; import { TaxonomyCascade } from "@/components/TaxonomyCascade"; import type { Resource, ResourceTag } from "@/types"; const statusBadge: Record = { approved: { variant: "default", icon: }, pending: { variant: "secondary", icon: }, rejected: { variant: "destructive", icon: }, }; const typeIcons: Record = { pdf: , video: