import { FilesBucket as FilesBucketIcon } from 'icons' import { noop } from 'lodash' import { forwardRef, type CSSProperties } from 'react' import { Badge, Button, Card, CardContent, CardHeader, CardTitle, Table, TableBody, TableHead, TableHeader, TableRow, Tooltip, TooltipContent, TooltipTrigger, } from 'ui' import { PolicyRow } from '@/components/interfaces/Auth/Policies/PolicyTableRow/PolicyRow' import type { Policy } from '@/components/interfaces/Auth/Policies/PolicyTableRow/PolicyTableRow.utils' import { PUBLIC_BUCKET_TOOLTIP } from '@/components/interfaces/Storage/Storage.constants' import { Bucket } from '@/data/storage/buckets-query' interface StoragePoliciesBucketRowProps { table: string label: string bucket?: Bucket policies: Policy[] style?: CSSProperties onSelectPolicyAdd: (bucketName: string | undefined, table: string) => void onSelectPolicyEdit: (policy: Policy, bucketName: string, table: string) => void onSelectPolicyDelete: (policy: Policy) => void } export const StoragePoliciesBucketRow = forwardRef( ( { table = '', label = '', bucket, policies = [], style, onSelectPolicyAdd = noop, onSelectPolicyEdit = noop, onSelectPolicyDelete = noop, }, ref ) => { return (
{label} {bucket?.public && ( Public {PUBLIC_BUCKET_TOOLTIP} )}
{policies.length === 0 ? (

No policies created yet

) : ( Name Command Applied to Actions {policies.map((policy) => ( onSelectPolicyEdit(p, bucket?.name ?? '', table)} onSelectDeletePolicy={onSelectPolicyDelete} /> ))}
)}
) } ) StoragePoliciesBucketRow.displayName = 'StoragePoliciesBucketRow'