"use client"; import * as React from "react"; import * as PopoverPrimitive from "@radix-ui/react-popover"; import { cn } from "@/lib/utils"; function Popover({ ...props }: React.ComponentProps) { return ; } function PopoverTrigger({ ...props }: React.ComponentProps) { return ; } function PopoverContent({ className, align = "center", sideOffset = 4, ...props }: React.ComponentProps) { const contentRef = React.useRef(null); React.useEffect(() => { const element = contentRef.current; if (!element) return; const disableAnimations = () => { element.style.setProperty('animation', 'none', 'important'); element.style.setProperty('transition', 'none', 'important'); // Ne pas toucher au transform car il est utilisé pour le positionnement element.style.setProperty('opacity', '1', 'important'); element.style.setProperty('will-change', 'auto', 'important'); // Supprimer toutes les classes d'animation Tailwind const classesToRemove = Array.from(element.classList).filter(cls => cls.includes('animate') || cls.includes('fade') || cls.includes('zoom') || cls.includes('slide') ); classesToRemove.forEach(cls => element.classList.remove(cls)); }; // Désactiver immédiatement disableAnimations(); // Observer pour les changements d'attributs const observer = new MutationObserver(() => { disableAnimations(); }); observer.observe(element, { attributes: true, attributeFilter: ['class', 'data-state'], subtree: false, }); // Observer pour les changements dans le DOM const domObserver = new MutationObserver(() => { disableAnimations(); }); domObserver.observe(document.body, { childList: true, subtree: true, }); return () => { observer.disconnect(); domObserver.disconnect(); }; }, []); return ( ); } function PopoverAnchor({ ...props }: React.ComponentProps) { return ; } export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };