import { isDefined } from 'twenty-shared/utils'; import { styled } from '@linaria/react'; import { Handle, Position } from '@xyflow/react'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { useIcons } from 'twenty-ui/display'; import { useContext } from 'react'; import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; import { RelationType } from '~/generated-metadata/graphql'; type ObjectFieldRowProps = { field: FieldMetadataItem; }; const StyledRow = styled.div` align-items: center; display: flex; gap: ${themeCssVariables.spacing[2]}; position: relative; width: 100%; padding: 0 ${themeCssVariables.spacing[2]}; `; const StyledFieldName = styled.div` color: ${themeCssVariables.font.color.primary}; `; export const ObjectFieldRow = ({ field }: ObjectFieldRowProps) => { const { theme } = useContext(ThemeContext); const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); const { getIcon } = useIcons(); const relatedObjectId = field.relation?.targetObjectMetadata.id; const relatedObject = objectMetadataItems.find( (x) => x.id === relatedObjectId, ); const Icon = getIcon(relatedObject?.icon); return ( {isDefined(Icon) && } {relatedObject?.labelPlural ?? ''} ); };