Build message threads (#3593)

* Adding message thread component

* Add state and mocks

* Rename components and use local state for messages

---------

Co-authored-by: Thomas Trompette <thomast@twenty.com>
This commit is contained in:
Thomas Trompette
2024-01-24 14:32:57 +01:00
committed by GitHub
parent afc36c7329
commit e85f65a195
20 changed files with 404 additions and 71 deletions

View File

@ -0,0 +1,61 @@
import React from 'react';
import styled from '@emotion/styled';
import { Avatar } from '@/users/components/Avatar';
import { beautifyPastDateRelativeToNow } from '~/utils/date-utils';
const StyledEmailThreadMessageSender = styled.div`
display: flex;
justify-content: space-between;
`;
const StyledEmailThreadMessageSenderUser = styled.div`
align-items: flex-start;
display: flex;
`;
const StyledAvatar = styled(Avatar)`
margin: ${({ theme }) => theme.spacing(0, 1)};
`;
const StyledSenderName = styled.span`
font-size: ${({ theme }) => theme.font.size.sm};
overflow: hidden;
text-overflow: ellipsis;
`;
const StyledThreadMessageSentAt = styled.div`
align-items: flex-end;
display: flex;
color: ${({ theme }) => theme.font.color.tertiary};
font-size: ${({ theme }) => theme.font.size.sm};
`;
type EmailThreadMessageSenderProps = {
displayName: string;
avatarUrl: string;
sentAt: string;
};
export const EmailThreadMessageSender = ({
displayName,
avatarUrl,
sentAt,
}: EmailThreadMessageSenderProps) => {
return (
<StyledEmailThreadMessageSender>
<StyledEmailThreadMessageSenderUser>
<StyledAvatar
avatarUrl={avatarUrl}
type="rounded"
placeholder={displayName}
size="sm"
/>
<StyledSenderName>{displayName}</StyledSenderName>
</StyledEmailThreadMessageSenderUser>
<StyledThreadMessageSentAt>
{beautifyPastDateRelativeToNow(sentAt)}
</StyledThreadMessageSentAt>
</StyledEmailThreadMessageSender>
);
};