import { ColumnDefinition } from '@/ui/data-table/types/ColumnDefinition'; import { FieldBooleanMetadata, FieldChipMetadata, FieldDateMetadata, FieldMetadata, FieldMoneyMetadata, FieldNumberMetadata, FieldRelationMetadata, FieldTextMetadata, FieldURLMetadata, } from '@/ui/field/types/FieldMetadata'; import { IconArrowUpRight, IconBrandLinkedin, IconBrandX, IconBuildingSkyscraper, IconCalendarEvent, IconLink, IconMap, IconMoneybag, IconPencil, IconTarget, IconUserCircle, IconUsers, } from '@/ui/icon/index'; import { Entity } from '@/ui/input/relation-picker/types/EntityTypeForSelect'; import { User } from '~/generated/graphql'; export const companiesAvailableColumnDefinitions: ColumnDefinition[] = [ { key: 'name', name: 'Name', Icon: IconBuildingSkyscraper, size: 180, index: 0, type: 'chip', metadata: { urlFieldName: 'domainName', contentFieldName: 'name', relationType: Entity.Company, placeHolder: 'Company Name', }, isVisible: true, buttonIcon: IconArrowUpRight, infoTooltipContent: 'The company name.', basePathToShowPage: '/companies/', } satisfies ColumnDefinition, { key: 'domainName', name: 'URL', Icon: IconLink, size: 100, index: 1, type: 'url', metadata: { fieldName: 'domainName', placeHolder: 'example.com', }, isVisible: true, buttonIcon: IconPencil, infoTooltipContent: 'The company website URL. We use this url to fetch the company icon.', } satisfies ColumnDefinition, { key: 'accountOwner', name: 'Account Owner', Icon: IconUserCircle, size: 150, index: 2, type: 'relation', metadata: { fieldName: 'accountOwner', relationType: Entity.User, }, isVisible: true, infoTooltipContent: 'Your team member responsible for managing the company account.', entityChipDisplayMapper: (dataObject: User) => { return { name: dataObject?.displayName, pictureUrl: dataObject?.avatarUrl ?? undefined, avatarType: 'rounded', }; }, } satisfies ColumnDefinition, { key: 'createdAt', name: 'Creation', Icon: IconCalendarEvent, size: 150, index: 3, type: 'date', metadata: { fieldName: 'createdAt', }, isVisible: true, infoTooltipContent: "Date when the company's record was created.", } satisfies ColumnDefinition, { key: 'employees', name: 'Employees', Icon: IconUsers, size: 150, index: 4, type: 'number', metadata: { fieldName: 'employees', isPositive: true, placeHolder: 'Employees', }, isVisible: true, infoTooltipContent: 'Number of employees in the company.', } satisfies ColumnDefinition, { key: 'linkedin', name: 'LinkedIn', Icon: IconBrandLinkedin, size: 170, index: 5, type: 'url', metadata: { fieldName: 'linkedinUrl', placeHolder: 'LinkedIn URL', }, isVisible: true, buttonIcon: IconPencil, infoTooltipContent: 'The company Linkedin account.', } satisfies ColumnDefinition, { key: 'address', name: 'Address', Icon: IconMap, size: 170, index: 6, type: 'text', metadata: { fieldName: 'address', placeHolder: 'Addre​ss', // Hack: Fake character to prevent password-manager from filling the field }, isVisible: true, infoTooltipContent: 'The company address.', } satisfies ColumnDefinition, { key: 'idealCustomerProfile', name: 'ICP', Icon: IconTarget, size: 150, index: 7, type: 'boolean', metadata: { fieldName: 'idealCustomerProfile', }, isVisible: false, infoTooltipContent: 'Ideal Customer Profile: Indicates whether the company is the most suitable and valuable customer for you.', } satisfies ColumnDefinition, { key: 'annualRecurringRevenue', name: 'ARR', Icon: IconMoneybag, size: 150, index: 8, type: 'moneyAmount', metadata: { fieldName: 'annualRecurringRevenue', placeHolder: 'ARR', }, infoTooltipContent: 'Annual Recurring Revenue: The actual or estimated annual revenue of the company.', } satisfies ColumnDefinition, { key: 'xUrl', name: 'Twitter', Icon: IconBrandX, size: 150, index: 9, type: 'url', metadata: { fieldName: 'xUrl', placeHolder: 'X', }, isVisible: false, buttonIcon: IconPencil, infoTooltipContent: 'The company Twitter account.', } satisfies ColumnDefinition, ]; export const suppliersAvailableColumnDefinitions: ColumnDefinition[] = [ { key: 'name', name: 'Name', Icon: IconBuildingSkyscraper, size: 180, index: 0, type: 'text', metadata: { fieldName: 'name', placeHolder: 'Company Name', }, isVisible: true, buttonIcon: IconArrowUpRight, infoTooltipContent: 'The company name.', basePathToShowPage: '/companies/', } satisfies ColumnDefinition, { key: 'city', name: 'City', Icon: IconBuildingSkyscraper, size: 180, index: 0, type: 'text', metadata: { fieldName: 'city', placeHolder: 'Company Name', }, isVisible: true, buttonIcon: IconArrowUpRight, infoTooltipContent: 'The company name.', basePathToShowPage: '/companies/', } satisfies ColumnDefinition, ];