import type { ReactNode } from 'react'; import { useTranslation } from 'react-i18next'; import { Button } from '@/components/ui/Button'; import { EmptyState } from '@/components/ui/EmptyState'; interface ProviderListProps { items: T[]; loading: boolean; keyField: (item: T) => string; renderContent: (item: T, index: number) => ReactNode; onEdit: (index: number) => void; onDelete: (index: number) => void; emptyTitle: string; emptyDescription: string; deleteLabel?: string; actionsDisabled?: boolean; getRowDisabled?: (item: T, index: number) => boolean; renderExtraActions?: (item: T, index: number) => ReactNode; } export function ProviderList({ items, loading, keyField, renderContent, onEdit, onDelete, emptyTitle, emptyDescription, deleteLabel, actionsDisabled = false, getRowDisabled, renderExtraActions, }: ProviderListProps) { const { t } = useTranslation(); if (loading) { return
{t('common.loading')}
; } if (!items.length) { return ; } return (
{items.map((item, index) => { const rowDisabled = getRowDisabled ? getRowDisabled(item, index) : false; return (
{renderContent(item, index)}
{renderExtraActions ? renderExtraActions(item, index) : null}
); })}
); }