"use client";

import { PermissionGate } from "@/components/auth/permission-gate";
import type { ActionSpec, ActionSurface } from "@/lib/rbac/action-access";

type AuthorizedActionProps = {
  action?: ActionSpec | null;
  surface?: ActionSurface;
  fallback?: React.ReactNode;
  children: React.ReactNode;
};

export function AuthorizedAction({
  action,
  surface,
  fallback,
  children,
}: AuthorizedActionProps) {
  if (!action) {
    return <>{children}</>;
  }

  return (
    <PermissionGate
      actionKey={action.actionKey}
      permissions={action.permissions}
      require={action.require}
      mode={action.mode}
      message={action.message}
      roleAliases={action.roleAliases}
      surface={surface || action.surface}
      fallback={fallback}
    >
      {children}
    </PermissionGate>
  );
}
