import { type ReactNode, useContext } from 'react'; import { styled } from '@linaria/react'; import { useLingui } from '@lingui/react/macro'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { SettingsItemTypeTag } from '@/settings/components/SettingsItemTypeTag'; import { TableRow } from '@/ui/layout/table/components/TableRow'; import { SETTINGS_OBJECT_TABLE_ROW_GRID_TEMPLATE_COLUMNS, StyledActionTableCell, StyledNameTableCell, } from '@/settings/data-model/object-details/components/SettingsObjectItemTableRowStyledComponents'; import { TableCell } from '@/ui/layout/table/components/TableCell'; import { useIcons } from 'twenty-ui/display'; import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; 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: ${themeCssVariables.spacing[1]}; `; const StyledNameLabel = styled.div` white-space: nowrap; text-overflow: ellipsis; overflow: hidden; `; const StyledInactiveLabel = styled.span` color: ${themeCssVariables.font.color.extraLight}; font-size: ${themeCssVariables.font.size.sm}; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; flex: 0 999 auto; min-width: 48px; &::before { content: 'ยท'; margin-right: ${themeCssVariables.spacing[1]}; } `; export const SettingsObjectMetadataItemTableRow = ({ action, objectMetadataItem, link, totalObjectCount, }: SettingsObjectMetadataItemTableRowProps) => { const { theme } = useContext(ThemeContext); const { t } = useLingui(); const { getIcon } = useIcons(); const Icon = getIcon(objectMetadataItem.icon); return ( {!!Icon && ( )} {objectMetadataItem.labelPlural} {!objectMetadataItem.isActive && ( {t`Deactivated`} )} { objectMetadataItem.fields.filter( (field) => !isHiddenSystemField(field), ).length } {totalObjectCount} {action} ); };