Backup-bdg's picture
Upload 565 files
b59aa07 verified
raw
history blame
1.28 kB
import { NavLink } from "react-router";
import { cn } from "#/utils/utils";
import { BetaBadge } from "./beta-badge";
import { LoadingSpinner } from "../shared/loading-spinner";
interface NavTabProps {
to: string;
label: string | React.ReactNode;
icon: React.ReactNode;
isBeta?: boolean;
isLoading?: boolean;
rightContent?: React.ReactNode;
}
export function NavTab({
to,
label,
icon,
isBeta,
isLoading,
rightContent,
}: NavTabProps) {
return (
<NavLink
end
key={to}
to={to}
className={cn(
"px-2 border-b border-r border-neutral-600 bg-base-secondary flex-1",
"first-of-type:rounded-tl-xl last-of-type:rounded-tr-xl last-of-type:border-r-0",
"flex items-center gap-2 h-full min-h-[36px]",
)}
>
{({ isActive }) => (
<div className="flex items-center justify-between w-full">
<div className="flex items-center gap-2">
<div className={cn(isActive && "text-logo")}>{icon}</div>
{label}
{isBeta && <BetaBadge />}
</div>
<div className="flex items-center gap-2">
{rightContent}
{isLoading && <LoadingSpinner size="small" />}
</div>
</div>
)}
</NavLink>
);
}