'use client';

import React from 'react';
import { Spin } from 'antd';
import { LoadingState } from '@/components/ui/LoadingState';

export interface WaygestFormModalLoadingBodyProps {
    loading: boolean;
    tip?: string;
    minHeight?: number;
    children: React.ReactNode;
}

/**
 * Corpo padrão de modal CRUD Waygest: Spin centrado enquanto carrega registro ao abrir.
 * Mantém `children` montados (ocultos) para o fetch interno do formulário poder concluir
 * e reportar fim do loading — sem desmontar o componente que dispara a carga.
 * Usar com `useWaygestFormModalProps` + `confirmLoading` no `Modal`.
 */
export function WaygestFormModalLoadingBody({
    loading,
    tip = 'Carregando…',
    minHeight = 200,
    children,
}: WaygestFormModalLoadingBodyProps) {
    return (
        <>
            {loading ? (
                <div
                    style={{
                        display: 'flex',
                        justifyContent: 'center',
                        alignItems: 'center',
                        minHeight,
                    }}
                    role="status"
                    aria-live="polite"
                    aria-busy="true"
                >
                    <LoadingState size="large" label={tip} />
                </div>
            ) : null}
            <div
                style={loading ? { display: 'none' } : undefined}
                aria-hidden={loading || undefined}
            >
                {children}
            </div>
        </>
    );
}
