'use client';

import { Eye, RefreshCw } from 'lucide-react';
import { ICON_SIZE_MD } from '@/components/icons';
import React from 'react';
import { ModalOpcoesBase, type ModalOpcaoAction } from '@/components/ModalOpcoesBase';
import type { CursorAgent } from './types';

export interface ModalOpcoesCursorAgentProps {
    open: boolean;
    onClose: () => void;
    item: CursorAgent | null;
    onVer: (item: CursorAgent) => void;
    onSincronizar?: (item: CursorAgent) => void;
}

const statusText: Record<string, string> = {
    CREATING: 'Criando',
    RUNNING: 'Rodando',
    FINISHED: 'Finalizado',
    FAILED: 'Falhou',
    CANCELLED: 'Cancelado'};

export function ModalOpcoesCursorAgent({
    open,
    onClose,
    item,
    onVer,
    onSincronizar}: ModalOpcoesCursorAgentProps) {
    if (!item) return null;
    const subtitle = [item.name, item.projeto?.nome, statusText[item.status] || item.status]
        .filter(Boolean)
        .join(' · ');
    const actions: ModalOpcaoAction[] = [
        {
            key: 'ver',
            label: 'Ver detalhes',
            icon: <Eye size={ICON_SIZE_MD} aria-hidden />,
            onClick: () => {
                onClose();
                onVer(item);
            },
            primary: true},
    ];
    if (onSincronizar && (item.status === 'CREATING' || item.status === 'RUNNING')) {
        actions.push({
            key: 'sync',
            label: 'Sincronizar',
            icon: <RefreshCw size={ICON_SIZE_MD} aria-hidden />,
            onClick: () => {
                onClose();
                onSincronizar(item);
            }});
    }
    return (
        <ModalOpcoesBase
            open={open}
            onClose={onClose}
            title="Opções do agente"
            subtitle={subtitle}
            actions={actions}
            width={380}
            data-testid="projeto-qualidade-cursor-agent-opcoes-modal"
            aria-label="Opções do agente"
        />
    );
}
