leankg 0.19.31

Lightweight Knowledge Graph for AI-Assisted Development
/**
 * FR-E39 — loading/progress: overlay shown while the graph/layout loads.
 * aria-busy + progressbar roles (FR-E43).
 */
export default function LoadingOverlay({
  loading,
  label = 'Loading graph…',
  progress,
}: {
  loading: boolean;
  label?: string;
  progress?: number;
}) {
  if (!loading) return null;
  return (
    <div
      className="loading-overlay"
      role="progressbar"
      aria-busy="true"
      aria-label={label}
      data-testid="loading-overlay"
    >
      <div className="spinner" aria-hidden="true" />
      <span className="loading-label">{label}</span>
      {progress != null && <span className="loading-progress">{Math.round(progress)}%</span>}
    </div>
  );
}