'use client'; import { useState, useRef, useEffect } from 'react'; import { useTranslations } from 'next-intl'; interface HelpTooltipProps { shortText: string; // Text für Hover longText: string; // Text für Click/Modal position?: 'top' | 'bottom' | 'left' | 'right'; } export default function HelpTooltip({ shortText, longText, position = 'top' }: HelpTooltipProps) { const t = useTranslations('CuratorHelp'); const [showHover, setShowHover] = useState(false); const [showModal, setShowModal] = useState(false); const tooltipRef = useRef(null); const buttonRef = useRef(null); useEffect(() => { function handleClickOutside(event: MouseEvent) { if ( tooltipRef.current && !tooltipRef.current.contains(event.target as Node) && buttonRef.current && !buttonRef.current.contains(event.target as Node) ) { setShowModal(false); } } if (showModal) { document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside); }; } }, [showModal]); const positionStyles = { top: { bottom: '100%', left: '50%', transform: 'translateX(-50%)', marginBottom: '0.5rem' }, bottom: { top: '100%', left: '50%', transform: 'translateX(-50%)', marginTop: '0.5rem' }, left: { right: '100%', top: '50%', transform: 'translateY(-50%)', marginRight: '0.5rem' }, right: { left: '100%', top: '50%', transform: 'translateY(-50%)', marginLeft: '0.5rem' }, }; return (
{/* Hover Tooltip */} {showHover && !showModal && (
{shortText}
)} {/* Modal für detaillierte Informationen */} {showModal && ( <> {/* Overlay */}
setShowModal(false)} /> {/* Modal Content */}
e.stopPropagation()} >

{t('modalTitle')}

{longText}
)}
); }