Files
Wdipl-react/components/ui/shimmer-button.tsx

29 lines
1.1 KiB
TypeScript

import React from "react";
import { cn } from "./utils";
interface ShimmerButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
children: React.ReactNode;
className?: string;
}
const ShimmerButton = React.forwardRef<HTMLButtonElement, ShimmerButtonProps>(
({ className, children, ...props }, ref) => {
return (
<button
ref={ref}
className={cn(
"relative inline-flex items-center justify-center gap-2 rounded-md bg-accent px-6 py-3 text-sm font-medium text-accent-foreground transition-all duration-300 hover:bg-accent/90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent whitespace-nowrap overflow-hidden",
"before:absolute before:inset-0 before:-translate-x-full before:animate-[shimmer_2s_infinite] before:bg-gradient-to-r before:from-transparent before:via-white/10 before:to-transparent cursor-pointer",
className
)}
{...props}
>
{children}
</button>
);
}
);
ShimmerButton.displayName = "ShimmerButton";
export { ShimmerButton };