From 096f005562cfc1fc1f5c7c529864de23f8ed1ca7 Mon Sep 17 00:00:00 2001 From: Suman Sahoo Date: Tue, 23 Jan 2024 16:36:21 +0530 Subject: [PATCH] header component added (#3539) * header component added * fix css issues and date format issue --------- Co-authored-by: bosiraphael --- .../emails/components/ThreadHeader.tsx | 54 +++++++++++++++++++ .../components/RightDrawerThread.tsx | 11 +++- .../modules/ui/display/tag/components/Tag.tsx | 37 +++++++++---- 3 files changed, 91 insertions(+), 11 deletions(-) create mode 100644 packages/twenty-front/src/modules/activities/emails/components/ThreadHeader.tsx diff --git a/packages/twenty-front/src/modules/activities/emails/components/ThreadHeader.tsx b/packages/twenty-front/src/modules/activities/emails/components/ThreadHeader.tsx new file mode 100644 index 000000000..8d8a2bb62 --- /dev/null +++ b/packages/twenty-front/src/modules/activities/emails/components/ThreadHeader.tsx @@ -0,0 +1,54 @@ +import styled from '@emotion/styled'; + +import { IconMail } from '@/ui/display/icon'; +import { Tag } from '@/ui/display/tag/components/Tag'; +import { beautifyPastDateRelativeToNow } from '~/utils/date-utils'; +interface ThreadHeaderProps { + subject: string; + lastMessageSentAt: Date; +} + +const StyledContainer = styled.div` + align-items: flex-start; + display: flex; + flex-direction: column; + padding: ${({ theme }) => theme.spacing(6)}; + gap: ${({ theme }) => theme.spacing(6)}; + border-bottom: 1px solid ${({ theme }) => theme.border.color.medium}; + background: ${({ theme }) => theme.background.secondary}; +`; + +const StyledHead = styled.div` + width: 100%; +`; + +const StyledHeading = styled.h2` + margin: 0; + margin-bottom: ${({ theme }) => theme.spacing(3)}; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +`; + +const StyledContent = styled.span` + color: ${({ theme }) => theme.font.color.tertiary}; + width: 100%; +`; + +export const ThreadHeader = ({ + subject, + lastMessageSentAt, +}: ThreadHeaderProps) => { + return ( + + {}} /> + + {subject} + + Last message {beautifyPastDateRelativeToNow(lastMessageSentAt)} + + + + ); +}; diff --git a/packages/twenty-front/src/modules/activities/emails/right-drawer/components/RightDrawerThread.tsx b/packages/twenty-front/src/modules/activities/emails/right-drawer/components/RightDrawerThread.tsx index aa6df0358..b38a2d73b 100644 --- a/packages/twenty-front/src/modules/activities/emails/right-drawer/components/RightDrawerThread.tsx +++ b/packages/twenty-front/src/modules/activities/emails/right-drawer/components/RightDrawerThread.tsx @@ -1,6 +1,8 @@ import React from 'react'; import styled from '@emotion/styled'; +import { ThreadHeader } from '@/activities/emails/components/ThreadHeader'; + const StyledContainer = styled.div` box-sizing: border-box; display: flex; @@ -12,9 +14,16 @@ const StyledContainer = styled.div` `; export const RightDrawerThread = () => { + const mockedThread = { + subject: 'Tes with long subject, very long subject, very long subject', + receivedAt: new Date(), + }; return ( - <> + ); }; diff --git a/packages/twenty-front/src/modules/ui/display/tag/components/Tag.tsx b/packages/twenty-front/src/modules/ui/display/tag/components/Tag.tsx index f0b534128..51c84d6f8 100644 --- a/packages/twenty-front/src/modules/ui/display/tag/components/Tag.tsx +++ b/packages/twenty-front/src/modules/ui/display/tag/components/Tag.tsx @@ -1,5 +1,7 @@ +import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; +import { IconComponent } from '@/ui/display/icon/types/IconComponent'; import { ThemeColor } from '@/ui/theme/constants/colors'; import { themeColorSchema } from '@/ui/theme/utils/themeColorSchema'; @@ -30,12 +32,18 @@ const StyledContent = styled.span` white-space: nowrap; `; +const StyledIconContainer = styled.div` + display: flex; + margin-right: ${({ theme }) => theme.spacing(1)}; +`; + type TagWeight = 'regular' | 'medium'; type TagProps = { className?: string; color: ThemeColor; text: string; + Icon?: IconComponent; onClick?: () => void; weight?: TagWeight; }; @@ -44,15 +52,24 @@ export const Tag = ({ className, color, text, + Icon, onClick, weight = 'regular', -}: TagProps) => ( - - {text} - -); +}: TagProps) => { + const theme = useTheme(); + return ( + + {!!Icon && ( + + + + )} + {text} + + ); +};