import { Button } from 'antd';
import type { ButtonProps } from 'antd';
import { useAuthStore } from '@/store/auth';

interface AuthButtonProps extends ButtonProps {
  /** 不传表示不做权限限制 */
  permission?: string;
  /** 无权限时的表现：隐藏（默认）或禁用 */
  fallback?: 'hide' | 'disabled';
}

/**
 * 带按钮级权限校验的 Button。
 *
 * <AuthButton permission="system:user:add">新增用户</AuthButton>
 */
export default function AuthButton({
  permission,
  fallback = 'hide',
  ...buttonProps
}: AuthButtonProps) {
  const hasPermission = useAuthStore((state) => state.hasPermission);

  if (permission && !hasPermission(permission)) {
    return fallback === 'disabled' ? <Button {...buttonProps} disabled /> : null;
  }

  return <Button {...buttonProps} />;
}
