import React from 'react'; import { Text } from '@mantine/core'; import { useTranslation } from 'react-i18next'; import { Tooltip } from '../../shared/Tooltip'; import HotkeyDisplay from '../../hotkeys/HotkeyDisplay'; import FavoriteStar from '../toolPicker/FavoriteStar'; import { ToolRegistryEntry, getSubcategoryColor } from '../../../data/toolsTaxonomy'; import { getIconBackground, getIconStyle, getItemClasses, useToolMeta } from './shared'; interface CompactToolItemProps { id: string; tool: ToolRegistryEntry; isSelected: boolean; onClick: () => void; tooltipPortalTarget?: HTMLElement | undefined; } const CompactToolItem: React.FC = ({ id, tool, isSelected, onClick, tooltipPortalTarget }) => { const { t } = useTranslation(); const { binding, isFav, toggleFavorite, disabled } = useToolMeta(id, tool); const categoryColor = getSubcategoryColor(tool.subcategoryId); const iconBg = getIconBackground(categoryColor, false); const iconClasses = 'tool-panel__fullscreen-list-icon'; let iconNode: React.ReactNode = null; if (React.isValidElement<{ style?: React.CSSProperties }>(tool.icon)) { const element = tool.icon as React.ReactElement<{ style?: React.CSSProperties }>; iconNode = React.cloneElement(element, { style: { ...(element.props.style || {}), fontSize: '1.5rem', }, }); } else { iconNode = tool.icon; } const compactButton = ( ); const tooltipContent = disabled ? ( {t('toolPanel.fullscreen.comingSoon', 'Coming soon:')} {tool.description} ) : (
{tool.description} {binding && (
{t('settings.hotkeys.shortcut', 'Shortcut')}
)}
); return ( {compactButton} ); }; export default CompactToolItem;