import React from 'react';
import { usePermissions } from '@/features/auth/hooks/usePermissions';
import type { PermissionCheck } from '@/features/auth/constants/permissions';

interface CanProps {
  permission?: PermissionCheck;
  superAdminOnly?: boolean;
  children: React.ReactNode;
  fallback?: React.ReactNode;
}

export const Can: React.FC<CanProps> = ({
  permission,
  superAdminOnly = false,
  children,
  fallback = null,
}) => {
  const { can, isSuperAdmin, isReady } = usePermissions();

  if (!isReady) {
    return null;
  }

  const allowed = superAdminOnly ? isSuperAdmin : can(permission);

  if (!allowed) {
    return <>{fallback}</>;
  }

  return <>{children}</>;
};
