import { styled } from '@linaria/react';
import { t } from '@lingui/core/macro';
import { useContext } from 'react';
import { ObjectMetadataIcon } from '@/object-metadata/components/ObjectMetadataIcon';
import { type EnrichedObjectMetadataItem } from '@/object-metadata/types/EnrichedObjectMetadataItem';
import { SettingsItemTypeTag } from '@/settings/components/SettingsItemTypeTag';
import { IconBox, OverflowingTextWithTooltip } from 'twenty-ui/display';
import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants';
export type SettingsDataModelObjectPreviewProps = {
className?: string;
objectMetadataItems: Pick<
EnrichedObjectMetadataItem,
| 'icon'
| 'labelSingular'
| 'labelPlural'
| 'isCustom'
| 'isRemote'
| 'nameSingular'
| 'color'
| 'isSystem'
>[];
pluralizeLabel?: boolean;
};
const StyledObjectPreview = styled.div`
align-items: center;
display: flex;
justify-content: space-between;
`;
const StyledObjectName = styled.div`
display: flex;
gap: ${themeCssVariables.spacing[2]};
max-width: 60%;
`;
const StyledOverflowingTextWithTooltip = styled.div`
color: ${themeCssVariables.font.color.tertiary};
`;
const StyledNumber = styled.div`
color: ${themeCssVariables.font.color.tertiary};
padding-right: ${themeCssVariables.spacing[2]};
`;
const StyledIconContainer = styled.div`
flex-shrink: 0;
`;
const StyledSeparator = styled.div`
align-self: stretch;
background: ${themeCssVariables.background.quaternary};
height: 1px;
margin-bottom: ${themeCssVariables.spacing[2]};
margin-top: ${themeCssVariables.spacing[2]};
`;
type SettingsDataModelObjectPreviewItemProps = {
objectMetadataItem: Pick<
EnrichedObjectMetadataItem,
| 'icon'
| 'labelSingular'
| 'labelPlural'
| 'isCustom'
| 'isRemote'
| 'nameSingular'
| 'color'
| 'isSystem'
>;
pluralizeLabel: boolean;
index: number;
};
const SettingsDataModelObjectPreviewItem = ({
objectMetadataItem,
pluralizeLabel = true,
index,
}: SettingsDataModelObjectPreviewItemProps) => {
const { theme } = useContext(ThemeContext);
return (
<>
{index > 0 && }
>
);
};
const SettingsDataModelObjectPreviewOtherObjects = ({
selected,
}: {
selected: number;
}) => {
const { theme } = useContext(ThemeContext);
return (
<>
>
);
};
export const SettingsDataModelObjectPreview = ({
objectMetadataItems,
pluralizeLabel = true,
}: SettingsDataModelObjectPreviewProps) => {
let selected = 0;
return (
<>
{objectMetadataItems.map((objectMetadataItem, index) => {
selected++;
return selected <= 3 ? (
) : (
<>>
);
})}
{selected > 3 && (
)}
>
);
};