"use client"; import React from "react"; import { motion } from "motion/react"; import { toPersian, cn } from "../lib/utils"; interface HeaderButtonProps { onClick?: () => void; children: React.ReactNode; variant?: "primary" | "secondary" | "outline" | "ghost"; className?: string; badge?: number; icon?: React.ReactNode; layout?: "row" | "col"; } export default function HeaderButton({ onClick, children, variant = "primary", className = "", badge, icon, layout = "col" }: HeaderButtonProps) { const baseStyles = "relative flex items-center justify-center rounded-2xl transition-all duration-300 font-vazir select-none cursor-pointer overflow-visible focus-visible:ring-4 focus-visible:ring-canina-blue/30 focus-visible:outline-none"; const layouts = { col: "flex-col", row: "flex-row gap-2" }; const variants = { primary: "bg-canina-blue text-white hover:bg-medical-gray-900 shadow-lg shadow-canina-blue/20", secondary: "bg-medical-gray-50 text-medical-gray-600 hover:bg-medical-gray-100", outline: "border-2 border-medical-gray-100 text-medical-gray-700 hover:border-canina-blue hover:text-canina-blue", ghost: "text-medical-gray-600 hover:bg-medical-gray-50 hover:text-canina-blue" }; const [mounted, setMounted] = React.useState(false); React.useEffect(() => { setMounted(true); }, []); return ( {icon &&
{icon}
}
{children}
{mounted && badge !== undefined && badge > 0 && ( {toPersian(badge.toString())} )}
); }