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;