import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; import { IconCalendar, IconComment, OverflowingTextWithTooltip, } from 'twenty-ui'; import { useOpenActivityRightDrawer } from '@/activities/hooks/useOpenActivityRightDrawer'; import { ActivityTargetsInlineCell } from '@/activities/inline-cell/components/ActivityTargetsInlineCell'; import { Activity } from '@/activities/types/Activity'; import { getActivitySummary } from '@/activities/utils/getActivitySummary'; import { Checkbox, CheckboxShape } from '@/ui/input/components/Checkbox'; import { beautifyExactDate, hasDatePassed } from '~/utils/date-utils'; import { useCompleteTask } from '../hooks/useCompleteTask'; const StyledContainer = styled.div` align-items: center; justify-content: space-between; border-bottom: 1px solid ${({ theme }) => theme.border.color.light}; cursor: pointer; display: inline-flex; height: ${({ theme }) => theme.spacing(12)}; min-width: calc(100% - ${({ theme }) => theme.spacing(8)}); padding: 0 ${({ theme }) => theme.spacing(4)}; &:last-child { border-bottom: 0; } `; const StyledTaskBody = styled.div` color: ${({ theme }) => theme.font.color.tertiary}; display: flex; `; const StyledTaskTitle = styled.div<{ completed: boolean; }>` color: ${({ theme }) => theme.font.color.primary}; font-weight: ${({ theme }) => theme.font.weight.medium}; padding: 0 ${({ theme }) => theme.spacing(2)}; text-decoration: ${({ completed }) => (completed ? 'line-through' : 'none')}; `; const StyledCommentIcon = styled.div` align-items: center; color: ${({ theme }) => theme.font.color.light}; display: flex; margin-left: ${({ theme }) => theme.spacing(2)}; `; const StyledDueDate = styled.div<{ isPast: boolean; }>` align-items: center; color: ${({ theme, isPast }) => isPast ? theme.font.color.danger : theme.font.color.secondary}; display: flex; gap: ${({ theme }) => theme.spacing(1)}; padding-left: ${({ theme }) => theme.spacing(2)}; white-space: nowrap; `; const StyledRightSideContainer = styled.div` display: flex; `; const StyledPlaceholder = styled.div` color: ${({ theme }) => theme.font.color.light}; `; const StyledLeftSideContainer = styled.div` display: flex; `; const StyledCheckboxContainer = styled.div` display: flex; `; export const TaskRow = ({ task }: { task: Activity }) => { const theme = useTheme(); const openActivityRightDrawer = useOpenActivityRightDrawer(); const body = getActivitySummary(task.body); const { completeTask } = useCompleteTask(task); return ( { openActivityRightDrawer(task.id); }} > { e.stopPropagation(); }} > {task.title || Task title} {task.comments && task.comments.length > 0 && ( )} {task.dueAt && beautifyExactDate(task.dueAt)} ); };