import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; import { useLingui } from '@lingui/react/macro'; import { type ReactNode } from 'react'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { SettingsItemTypeTag } from '@/settings/components/SettingsItemTypeTag'; import { StyledActionTableCell, StyledNameTableCell, StyledObjectTableRow, } from '@/settings/data-model/object-details/components/SettingsObjectItemTableRowStyledComponents'; import { TableCell } from '@/ui/layout/table/components/TableCell'; import { useIcons } from 'twenty-ui/display'; export type SettingsObjectMetadataItemTableRowProps = { action: ReactNode; objectMetadataItem: ObjectMetadataItem; link?: string; totalObjectCount: number; }; const StyledNameContainer = styled.div` display: flex; align-items: center; flex: 1; min-width: 0; gap: ${({ theme }) => theme.spacing(1)}; `; const StyledNameLabel = styled.div` white-space: nowrap; text-overflow: ellipsis; overflow: hidden; `; const StyledInactiveLabel = styled.span` color: ${({ theme }) => theme.font.color.extraLight}; font-size: ${({ theme }) => theme.font.size.sm}; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; flex: 0 999 auto; min-width: 48px; &::before { content: 'ยท'; margin-right: ${({ theme }) => theme.spacing(1)}; } `; export const SettingsObjectMetadataItemTableRow = ({ action, objectMetadataItem, link, totalObjectCount, }: SettingsObjectMetadataItemTableRowProps) => { const { t } = useLingui(); const theme = useTheme(); const { getIcon } = useIcons(); const Icon = getIcon(objectMetadataItem.icon); return ( {!!Icon && ( )} {objectMetadataItem.labelPlural} {!objectMetadataItem.isActive && ( {t`Deactivated`} )} {objectMetadataItem.fields.filter((field) => !field.isSystem).length} {totalObjectCount} {action} ); };