import React from 'react'; import { Link } from 'react-router-dom'; import { OverlayTrigger, Tooltip } from 'react-bootstrap'; import * as Icons from '@phosphor-icons/react'; import DOMPurify from 'dompurify'; function ConfigurableIcon({ customClassName, iconName, linkAddress, onClick, placement, simpleIcon, size, styles, toolTipTitle, suffix // Allow rendering sanitized HTML }) { // Fallback for missing tooltip title if (!toolTipTitle) { toolTipTitle = 'no tooltip!!'; } // Resolve the requested icon or fallback to a default const IconComponent = Icons[iconName] || Icons['Question']; // Prepare icon props const iconProps = { ...size && { size }, ...styles && { style: styles }, }; // Sanitize suffix if provided const sanitizedSuffix = suffix ? DOMPurify.sanitize(suffix) : null; // Render the icon and suffix (simpleIcon mode) if (simpleIcon) { return ( {suffix && ( )} ); } return ( {toolTipTitle} )} placement={placement || 'bottom'} > {linkAddress ? ( // Render a Link if linkAddress is provided {suffix && ( )} ) : ( // Render a clickable div or standalone icon
{suffix && ( )}
)}
); } export default ConfigurableIcon;