'use client';

import { Alert } from 'antd';
import { useLocale } from '@/contexts/LocaleContext';

export type PermissionDeniedNoticeProps = {
    /**
     * Slug técnico (ex.: `financeiro.movimentos.cadastrar`) — só para telemetria/`data-permission`.
     * **Não** é exibido na UI (UX-FL-G002).
     */
    permission?: string;
    /** Descrição humana da ação (ex.: "cadastrar movimentos"). */
    action?: string;
    /** Atalho de URL recusado (ex.: `?novo=1`). */
    fromDeepLink?: boolean;
};

/**
 * Recusa visível na página (padrão C — o menu pode ocultar; a listagem explica o que falta).
 */
export function PermissionDeniedNotice({
    permission,
    action,
    fromDeepLink = false,
}: PermissionDeniedNoticeProps) {
    const { t } = useLocale();

    return (
        <Alert
            type={fromDeepLink ? 'warning' : 'info'}
            showIcon
            data-testid={fromDeepLink ? 'permission-denied-deeplink' : 'permission-denied-notice'}
            data-permission={permission || undefined}
            message={
                fromDeepLink
                    ? t('permissions.page.novoLinkDeniedTitle')
                    : t('permissions.page.deniedTitle')
            }
            description={t('permissions.page.deniedDescription', {
                action: action ?? t('permissions.page.actionGeneric'),
            })}
            style={{ marginBottom: 12 }}
        />
    );
}
