import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Badge } from '@/components/ui/badge'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { FolderIcon, Globe, Loader2, MoreVertical, Search, Settings, Trash2 } from 'lucide-react'; import { formatBytes } from '@/lib/file-utils'; import { formatDate } from '@/lib/utils'; import { useBucketCan } from '@/hooks/usePermissions'; import type { Bucket } from '@/types'; interface BucketListViewProps { buckets: Bucket[]; searchQuery: string; isLoading?: boolean; onSearchChange: (query: string) => void; onViewBucket: (bucketName: string) => void; onOpenSettings: (bucket: Bucket) => void; onDeleteBucket: (bucket: Bucket) => void; onWebsiteSettings: (bucket: Bucket) => void; } export function BucketListView({ buckets, searchQuery, isLoading = false, onSearchChange, onViewBucket, onOpenSettings, onDeleteBucket, onWebsiteSettings, }: BucketListViewProps) { const canBucket = useBucketCan(); const filteredBuckets = buckets.filter((bucket) => bucket.name.toLowerCase().includes(searchQuery.toLowerCase()) ); return (