'use client';

import { Copy, Eye, Pencil, Trash2 } from 'lucide-react';
import { ICON_SIZE_MD } from '@/components/icons';
import React from 'react';
import { ModalOpcoesBase, type ModalOpcaoAction } from '@/components/ModalOpcoesBase';
import type { TemplateProjeto } from './types';

export interface ModalOpcoesTemplateProjetoProps {
    open: boolean;
    onClose: () => void;
    item: TemplateProjeto | null;
    onVerDetalhes: (item: TemplateProjeto) => void;
    onUsar: (item: TemplateProjeto) => void;
    onEditar: (item: TemplateProjeto) => void;
    onExcluir: (item: TemplateProjeto) => void;
}

export function ModalOpcoesTemplateProjeto({
    open,
    onClose,
    item,
    onVerDetalhes,
    onUsar,
    onEditar,
    onExcluir}: ModalOpcoesTemplateProjetoProps) {
    if (!item) return null;

    const subtitle = [item.nome, item.categoria].filter(Boolean).join(' · ');

    const actions: ModalOpcaoAction[] = [
        {
            key: 'detalhes',
            label: 'Ver detalhes',
            icon: <Eye size={ICON_SIZE_MD} aria-hidden />,
            onClick: () => {
                onClose();
                onVerDetalhes(item);
            },
            primary: true},
        {
            key: 'usar',
            label: 'Usar template',
            icon: <Copy size={ICON_SIZE_MD} aria-hidden />,
            onClick: () => {
                onClose();
                onUsar(item);
            }},
        {
            key: 'editar',
            label: 'Editar',
            icon: <Pencil size={ICON_SIZE_MD} aria-hidden />,
            onClick: () => {
                onClose();
                onEditar(item);
            }},
        {
            key: 'excluir',
            label: 'Excluir',
            icon: <Trash2 size={ICON_SIZE_MD} aria-hidden />,
            onClick: () => {
                onClose();
                onExcluir(item);
            },
            danger: true},
    ];

    return (
        <ModalOpcoesBase
            open={open}
            onClose={onClose}
            title="Opções do template"
            subtitle={subtitle}
            actions={actions}
            width={380}
            data-testid="projetos-template-opcoes-modal"
            aria-label="Opções do template"
        />
    );
}
