"use client"; import React, { useState } from "react"; import { Info } from "lucide-react"; import { cn } from "@/lib/utils"; interface HelpTooltipProps { /** * Contenu du tooltip */ content: string | React.ReactNode; /** * Position du tooltip * @default "top" */ position?: "top" | "bottom" | "left" | "right"; /** * Largeur maximale du tooltip * @default "250px" */ maxWidth?: string; /** * Classe CSS personnalisée pour le wrapper */ className?: string; /** * Si vrai, affiche une icône d'information * @default true */ showIcon?: boolean; /** * Contenu personnalisé pour déclencher le tooltip */ trigger?: React.ReactNode; } export function HelpTooltip({ content, position = "top", maxWidth = "250px", className, showIcon = true, trigger, }: HelpTooltipProps) { const [isVisible, setIsVisible] = useState(false); const positionClasses = { top: "bottom-full left-1/2 -translate-x-1/2 mb-2 pb-1", bottom: "top-full left-1/2 -translate-x-1/2 mt-2 pt-1", left: "right-full top-1/2 -translate-y-1/2 mr-2 pr-1", right: "left-full top-1/2 -translate-y-1/2 ml-2 pl-1", }; const arrowClasses = { top: "top-full left-1/2 -translate-x-1/2 border-t-slate-800 border-r-transparent border-b-transparent border-l-transparent", bottom: "bottom-full left-1/2 -translate-x-1/2 border-b-slate-800 border-r-transparent border-t-transparent border-l-transparent", left: "left-full top-1/2 -translate-y-1/2 border-l-slate-800 border-t-transparent border-r-transparent border-b-transparent", right: "right-full top-1/2 -translate-y-1/2 border-r-slate-800 border-t-transparent border-l-transparent border-b-transparent", }; const defaultTrigger = ( ); return (
{content}
) : (