dify/web/app/components/plugins/base/badges/icon-with-tooltip.tsx
Joel aee0062cb2
chore: remove redundant aria-label attributes (#41724)
Co-authored-by: yyh <yuanyouhuilyz@gmail.com>
2026-09-03 09:10:16 +00:00

45 lines
1.2 KiB
TypeScript

import type { FC } from 'react'
import { cn } from '@langgenius/dify-ui/cn'
import { Tooltip, TooltipContent, TooltipTrigger } from '@langgenius/dify-ui/tooltip'
import * as React from 'react'
import { Theme } from '@/types/app'
type IconWithTooltipProps = {
className?: string
popupContent?: string
theme: Theme
BadgeIconLight: React.ElementType
BadgeIconDark: React.ElementType
}
const IconWithTooltip: FC<IconWithTooltipProps> = ({
className,
theme,
popupContent,
BadgeIconLight,
BadgeIconDark,
}) => {
const isDark = theme === Theme.dark
const iconClassName = cn('size-5', className)
const Icon = isDark ? BadgeIconDark : BadgeIconLight
const icon = (
<span className="flex shrink-0 items-center justify-center">
<Icon aria-hidden={!!popupContent} className={iconClassName} />
{popupContent && <span className="sr-only">{popupContent}</span>}
</span>
)
if (!popupContent) return icon
return (
<Tooltip>
<TooltipTrigger render={icon} />
<TooltipContent className="border-[0.5px] border-components-panel-border bg-components-tooltip-bg p-1.5 system-xs-medium text-text-secondary">
{popupContent}
</TooltipContent>
</Tooltip>
)
}
export default React.memo(IconWithTooltip)