import { useState } from 'react' import { PermissionAction } from '@supabase/shared-types/out/constants' import { Columns3, Edit2, MoreVertical, Trash, XCircle } from 'lucide-react' import Link from 'next/link' import type { Bucket } from 'data/storage/buckets-query' import { useAsyncCheckProjectPermissions } from 'hooks/misc/useCheckPermissions' import EditBucketModal from 'components/interfaces/Storage/EditBucketModal' import DeleteBucketModal from 'components/interfaces/Storage/DeleteBucketModal' import EmptyBucketModal from 'components/interfaces/Storage/EmptyBucketModal' import { Badge, Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, Tooltip, TooltipContent, TooltipTrigger, cn, } from 'ui' export interface BucketRowProps { bucket: Bucket projectRef?: string isSelected: boolean } const BucketRow = ({ bucket, projectRef = '', isSelected = false }: BucketRowProps) => { const { can: canUpdateBuckets } = useAsyncCheckProjectPermissions( PermissionAction.STORAGE_WRITE, '*' ) const [modal, setModal] = useState(null) const onClose = () => setModal(null) return (
{/* Even though we trim whitespaces from bucket names, there may be some existing buckets with trailing whitespaces. */}

{bucket.name}

{bucket.public && Public} {bucket.type === 'ANALYTICS' && (

Analytics bucket

)}
{canUpdateBuckets && isSelected ? (