"use client";

import Link from "next/link";
import { Eye, Pencil, Trash2 } from "lucide-react";

import { Button } from "@/components/ui/button";
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";

type RbacRowActionsProps = {
  editHref: string;
  viewLabel: string;
  editLabel: string;
  deleteLabel: string;
  onView: () => void;
  onDelete: () => void;
  viewDisabled?: boolean;
  deleteDisabled?: boolean;
};

export function RbacRowActions({
  editHref,
  viewLabel,
  editLabel,
  deleteLabel,
  onView,
  onDelete,
  viewDisabled,
  deleteDisabled,
}: RbacRowActionsProps) {
  return (
    <div className="flex justify-end gap-0.5">
      <Tooltip>
        <TooltipTrigger asChild>
          <Button
            type="button"
            variant="outline"
            size="icon-sm"
            className="size-7"
            onClick={onView}
            disabled={viewDisabled}
            aria-label={viewLabel}
          >
            <Eye className="size-3.5" />
          </Button>
        </TooltipTrigger>
        <TooltipContent>View</TooltipContent>
      </Tooltip>
      <Tooltip>
        <TooltipTrigger asChild>
          <Button type="button" variant="secondary" size="icon-sm" className="size-7" asChild>
            <Link href={editHref} aria-label={editLabel}>
              <Pencil className="size-3.5" />
            </Link>
          </Button>
        </TooltipTrigger>
        <TooltipContent>Edit</TooltipContent>
      </Tooltip>
      <Tooltip>
        <TooltipTrigger asChild>
          <Button
            type="button"
            variant="destructive"
            size="icon-sm"
            className="size-7"
            onClick={onDelete}
            disabled={deleteDisabled}
            aria-label={deleteLabel}
          >
            <Trash2 className="size-3.5" />
          </Button>
        </TooltipTrigger>
        <TooltipContent>Delete</TooltipContent>
      </Tooltip>
    </div>
  );
}
