openreplay/frontend/app/components/ui/SideMenuItem/SideMenuItem.tsx
Andrey Babushkin fd5c0c9747
Add lokalisation (#3092)
* applied eslint

* add locales and lint the project

* removed error boundary

* updated locales

* fix min files

* fix locales
2025-03-06 17:43:15 +01:00

94 lines
2.3 KiB
TypeScript

import React from 'react';
import { Icon } from 'UI';
import cn from 'classnames';
import { IconNames } from 'UI/SVG';
import { Tooltip } from 'antd';
import stl from './sideMenuItem.module.css';
type Props = {
title: string;
iconName?: IconNames;
iconBg?: boolean;
iconColor?: string;
iconSize?: number;
className?: string;
active?: boolean;
disabled?: boolean;
tooltipTitle?: string;
onClick?: () => void;
deleteHandler?: () => void;
leading?: React.ReactNode;
id?: string;
};
function SideMenuItem({
iconBg = false,
iconColor = 'gray-dark',
iconSize = 18,
className = '',
iconName,
title,
active = false,
disabled = false,
tooltipTitle = '',
onClick,
deleteHandler,
leading = null,
...props
}: Props) {
const handleClick = () => {
if (disabled) return;
if (onClick) onClick();
};
const handleDeleteClick = (e: React.MouseEvent) => {
e.stopPropagation();
if (deleteHandler) deleteHandler();
};
return (
<Tooltip disabled={!disabled} title={tooltipTitle} placement="top">
<div
className={cn(
className,
stl.menuItem,
'flex items-center py-2 justify-between shrink-0 cursor-pointer',
{ [stl.active]: active, [stl.disabled]: disabled },
)}
onClick={handleClick}
{...props}
>
<div className={cn('flex items-center w-full', stl.iconLabel)}>
{iconName && (
<div className="flex items-center justify-center w-8 h-8 mr-2">
{iconBg && (
<div
className={cn(
'w-8 h-8 rounded-full relative opacity-20',
iconBg,
)}
style={{ opacity: 0.2 }}
/>
)}
<Icon
name={iconName}
size={iconSize}
color={active ? 'teal' : iconColor}
className="absolute"
/>
</div>
)}
<span className={cn(stl.title, 'capitalize-first')}>{title}</span>
</div>
{leading && leading}
{deleteHandler && (
<div onClick={handleDeleteClick} className={stl.actions}>
<Icon name="trash" size={14} />
</div>
)}
</div>
</Tooltip>
);
}
export default SideMenuItem;