'use client';

/**
 * Banner anti-secrets para atas e documentos de projecto (TASK-PSC-058 / C24 / E25).
 * Aviso visual apenas — sem persistência de flag `sensivel` na API nesta onda.
 */

import React from 'react';
import { Alert, Space, Tag } from 'antd';

export type ProjetoAntiSecretsBannerVariant = 'atas' | 'documentos';

export type ProjetoAntiSecretsBannerProps = {
    /** `atas` = listagem/modais de ata; `documentos` = zona com Tag "Sensível / credenciais". */
    variant?: ProjetoAntiSecretsBannerVariant;
    className?: string;
    style?: React.CSSProperties;
    /** Override do test id do Alert (default: `projeto-anti-secrets-banner`). */
    'data-testid'?: string;
};

const COPY: Record<
    ProjetoAntiSecretsBannerVariant,
    { message: string; description: string }
> = {
    atas: {
        message: 'Não cole passwords, tokens ou connection strings',
        description:
            'Use o cofre ou gestor de secrets da equipe. Credenciais em atas ou comentários ficam expostas a quem tiver acesso ao projeto.',
    },
    documentos: {
        message: 'Não anexe arquivos com secrets em claro',
        description:
            'Passwords, tokens e connection strings não devem ir em anexos ou documentos do projeto. Salve-os no cofre ou gestor de secrets da equipe.',
    },
};

/**
 * Alert warning reutilizável; na variante `documentos` envolve Tag de classificação
 * e zona estável `projeto-documentos-anti-secrets-zone`.
 */
export function ProjetoAntiSecretsBanner({
    variant = 'atas',
    className,
    style,
    'data-testid': dataTestId = 'projeto-anti-secrets-banner',
}: ProjetoAntiSecretsBannerProps) {
    const copy = COPY[variant];

    const alert = (
        <Alert
            type="warning"
            showIcon
            className={variant === 'atas' ? className : undefined}
            style={variant === 'atas' ? { marginBottom: 16, ...style } : style}
            message={copy.message}
            description={copy.description}
            data-testid={dataTestId}
        />
    );

    if (variant === 'documentos') {
        return (
            <div
                className={className}
                style={{ marginBottom: 16, ...style }}
                data-testid="projeto-documentos-anti-secrets-zone"
            >
                <Space direction="vertical" size={8} style={{ width: '100%' }}>
                    <Tag color="warning">Sensível / credenciais</Tag>
                    {alert}
                </Space>
            </div>
        );
    }

    return alert;
}
