import type { ColumnDef } from '@tanstack/react-table';
import { Button } from '@ui/components/ui/button';
import {
    Tooltip,
    TooltipContent,
    TooltipProvider,
    TooltipTrigger,
} from '@ui/components/ui/tooltip';
import { Pencil, Trash2 } from 'lucide-react';
import type { Bank } from '@/types/finance';

interface ColumnHandlers {
    onEdit: (bank: Bank) => void;
    onDelete: (bank: Bank) => void;
    text: (key: string, params?: Record<string, unknown>) => string;
}

export const createBankColumns = ({ onEdit, onDelete, text }: ColumnHandlers): ColumnDef<Bank>[] => [
    {
        accessorKey: 'name',
        header: text('bank.field_name'),
    },
    {
        accessorKey: 'code',
        header: text('bank.field_code'),
    },
    {
        id: 'actions',
        header: text('common.label_actions'),
        cell: ({ row }) => {
            const bank = row.original;

            return (
                <div className="flex items-center gap-1">
                    <TooltipProvider>
                        <Tooltip>
                            <TooltipTrigger asChild>
                                <Button
                                    variant="ghost"
                                    size="icon"
                                    className="h-8 w-8"
                                    onClick={() => onEdit(bank)}
                                >
                                    <Pencil className="h-4 w-4" />
                                    <span className="sr-only">{text('common.btn_edit')}</span>
                                </Button>
                            </TooltipTrigger>
                            <TooltipContent>
                                <p>{text('common.btn_edit')}</p>
                            </TooltipContent>
                        </Tooltip>
                    </TooltipProvider>

                    <TooltipProvider>
                        <Tooltip>
                            <TooltipTrigger asChild>
                                <Button
                                    variant="ghost"
                                    size="icon"
                                    className="h-8 w-8 text-destructive hover:text-destructive hover:bg-destructive/10"
                                    onClick={() => onDelete(bank)}
                                >
                                    <Trash2 className="h-4 w-4" />
                                    <span className="sr-only">{text('common.btn_delete')}</span>
                                </Button>
                            </TooltipTrigger>
                            <TooltipContent>
                                <p>{text('common.btn_delete')}</p>
                            </TooltipContent>
                        </Tooltip>
                    </TooltipProvider>
                </div>
            );
        },
    }
];

