Some parts of the Frontend used theme constants exported from `modules/ui` while other parts used theme constants exported from `twenty-ui`. This PR centralizes theme constants by removing them from `modules/ui` completely.
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
import styled from '@emotion/styled';
|
|
import { IconComponent, Tag, ThemeColor } from 'twenty-ui';
|
|
|
|
import { Checkbox } from '@/ui/input/components/Checkbox';
|
|
import { MenuItemLeftContent } from '@/ui/navigation/menu-item/internals/components/MenuItemLeftContent';
|
|
|
|
import { StyledMenuItemBase } from '../internals/components/StyledMenuItemBase';
|
|
|
|
const StyledLeftContentWithCheckboxContainer = styled.div`
|
|
align-items: center;
|
|
display: flex;
|
|
flex-direction: row;
|
|
gap: ${({ theme }) => theme.spacing(2)};
|
|
`;
|
|
|
|
type MenuItemMultiSelectProps = {
|
|
color?: ThemeColor;
|
|
LeftIcon?: IconComponent;
|
|
selected: boolean;
|
|
text: string;
|
|
className: string;
|
|
onSelectChange?: (selected: boolean) => void;
|
|
};
|
|
|
|
export const MenuItemMultiSelect = ({
|
|
color,
|
|
LeftIcon,
|
|
text,
|
|
selected,
|
|
className,
|
|
onSelectChange,
|
|
}: MenuItemMultiSelectProps) => {
|
|
const handleOnClick = () => {
|
|
onSelectChange?.(!selected);
|
|
};
|
|
|
|
return (
|
|
<StyledMenuItemBase className={className} onClick={handleOnClick}>
|
|
<StyledLeftContentWithCheckboxContainer>
|
|
<Checkbox checked={selected} />
|
|
{color ? (
|
|
<Tag color={color} text={text} Icon={LeftIcon} />
|
|
) : (
|
|
<MenuItemLeftContent LeftIcon={LeftIcon} text={text} />
|
|
)}
|
|
</StyledLeftContentWithCheckboxContainer>
|
|
</StyledMenuItemBase>
|
|
);
|
|
};
|