import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; import { ReactNode } from 'react'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { SettingsDataModelObjectTypeTag } from '@/settings/data-model/objects/components/SettingsDataModelObjectTypeTag'; import { getObjectTypeLabel } from '@/settings/data-model/utils/getObjectTypeLabel'; import { TableCell } from '@/ui/layout/table/components/TableCell'; import { TableRow } from '@/ui/layout/table/components/TableRow'; import { useIcons } from 'twenty-ui/display'; export type SettingsObjectMetadataItemTableRowProps = { action: ReactNode; objectMetadataItem: ObjectMetadataItem; link?: string; totalObjectCount: number; }; export const StyledObjectTableRow = styled(TableRow)` grid-template-columns: 180px 98.7px 98.7px 98.7px 36px; `; const StyledNameTableCell = styled(TableCell)` color: ${({ theme }) => theme.font.color.primary}; gap: ${({ theme }) => theme.spacing(2)}; `; const StyledNameLabel = styled.div` white-space: nowrap; text-overflow: ellipsis; overflow: hidden; `; const StyledActionTableCell = styled(TableCell)` justify-content: center; padding-right: ${({ theme }) => theme.spacing(1)}; `; export const SettingsObjectMetadataItemTableRow = ({ action, objectMetadataItem, link, totalObjectCount, }: SettingsObjectMetadataItemTableRowProps) => { const theme = useTheme(); const { getIcon } = useIcons(); const Icon = getIcon(objectMetadataItem.icon); const objectTypeLabel = getObjectTypeLabel(objectMetadataItem); return ( {!!Icon && ( )} {objectMetadataItem.labelPlural} {objectMetadataItem.fields.filter((field) => !field.isSystem).length} {totalObjectCount} {action} ); };