diff --git a/packages/twenty-front/src/modules/accounts/types/MessageChannel.ts b/packages/twenty-front/src/modules/accounts/types/MessageChannel.ts index ed49f7f0f..625147e16 100644 --- a/packages/twenty-front/src/modules/accounts/types/MessageChannel.ts +++ b/packages/twenty-front/src/modules/accounts/types/MessageChannel.ts @@ -1,4 +1,4 @@ -import { InboxSettingsVisibilityValue } from '@/settings/accounts/components/SettingsAccountsInboxSettingsVisibilitySection'; +import { InboxSettingsVisibilityValue } from '@/settings/accounts/components/SettingsAccountsInboxVisibilitySettingsCard'; export type MessageChannel = { id: string; diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarVisibilitySettingsCard.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarVisibilitySettingsCard.tsx new file mode 100644 index 000000000..412d21fc4 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarVisibilitySettingsCard.tsx @@ -0,0 +1,44 @@ +import styled from '@emotion/styled'; + +import { SettingsAccountsRadioSettingsCard } from '@/settings/accounts/components/SettingsAccountsRadioSettingsCard'; +import { SettingsAccountsVisibilitySettingCardMedia } from '@/settings/accounts/components/SettingsAccountsVisibilitySettingCardMedia'; + +export enum EventSettingsVisibilityValue { + Everything = 'share_everything', + Metadata = 'metadata', +} + +type SettingsAccountsEventVisibilitySettingsCardProps = { + onChange: (nextValue: EventSettingsVisibilityValue) => void; + value?: EventSettingsVisibilityValue; +}; + +const StyledCardMedia = styled(SettingsAccountsVisibilitySettingCardMedia)` + height: ${({ theme }) => theme.spacing(6)}; +`; + +const eventSettingsVisibilityOptions = [ + { + title: 'Everything', + description: 'The whole event details will be shared with your team.', + value: EventSettingsVisibilityValue.Everything, + cardMedia: , + }, + { + title: 'Metadata', + description: 'Only date & participants will be shared with your team.', + value: EventSettingsVisibilityValue.Metadata, + cardMedia: , + }, +]; + +export const SettingsAccountsEventVisibilitySettingsCard = ({ + onChange, + value = EventSettingsVisibilityValue.Everything, +}: SettingsAccountsEventVisibilitySettingsCardProps) => ( + +); diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsInboxSettingsVisibilitySection.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsInboxSettingsVisibilitySection.tsx deleted file mode 100644 index 58157f09a..000000000 --- a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsInboxSettingsVisibilitySection.tsx +++ /dev/null @@ -1,139 +0,0 @@ -import styled from '@emotion/styled'; - -import { SettingsAccountsCardMedia } from '@/settings/accounts/components/SettingsAccountsCardMedia'; -import { H2Title } from '@/ui/display/typography/components/H2Title'; -import { Radio } from '@/ui/input/components/Radio'; -import { Card } from '@/ui/layout/card/components/Card'; -import { CardContent } from '@/ui/layout/card/components/CardContent'; -import { Section } from '@/ui/layout/section/components/Section'; - -export enum InboxSettingsVisibilityValue { - Everything = 'share_everything', - SubjectMetadata = 'subject', - Metadata = 'metadata', -} - -type SettingsAccountsInboxSettingsVisibilitySectionProps = { - onChange: (nextValue: InboxSettingsVisibilityValue) => void; - value?: InboxSettingsVisibilityValue; -}; - -const StyledCardContent = styled(CardContent)` - align-items: center; - display: flex; - gap: ${({ theme }) => theme.spacing(4)}; - cursor: pointer; - - &:hover { - background: ${({ theme }) => theme.background.transparent.lighter}; - } -`; - -const StyledCardMedia = styled(SettingsAccountsCardMedia)` - align-items: stretch; -`; - -const StyledSubjectSkeleton = styled.div<{ isActive?: boolean }>` - background-color: ${({ isActive, theme }) => - isActive ? theme.accent.accent4060 : theme.background.quaternary}; - border-radius: 1px; - height: 3px; -`; - -const StyledMetadataSkeleton = styled(StyledSubjectSkeleton)` - margin-right: ${({ theme }) => theme.spacing(2)}; -`; - -const StyledBodySkeleton = styled(StyledSubjectSkeleton)` - border-radius: ${({ theme }) => theme.border.radius.xs}; - height: 22px; -`; - -const StyledTitle = styled.div` - color: ${({ theme }) => theme.font.color.primary}; - font-weight: ${({ theme }) => theme.font.weight.medium}; - margin-bottom: ${({ theme }) => theme.spacing(2)}; -`; - -const StyledDescription = styled.div` - color: ${({ theme }) => theme.font.color.tertiary}; - font-size: ${({ theme }) => theme.font.size.sm}; -`; - -const StyledRadio = styled(Radio)` - margin-left: auto; -`; - -const inboxSettingsVisibilityOptions = [ - { - title: 'Everything', - description: 'Subject, body and attachments will be shared with your team.', - value: InboxSettingsVisibilityValue.Everything, - visibleElements: { - metadata: true, - subject: true, - body: true, - }, - }, - { - title: 'Subject and metadata', - description: 'Subject and metadata will be shared with your team.', - value: InboxSettingsVisibilityValue.SubjectMetadata, - visibleElements: { - metadata: true, - subject: true, - body: false, - }, - }, - { - title: 'Metadata', - description: 'Timestamp and participants will be shared with your team.', - value: InboxSettingsVisibilityValue.Metadata, - visibleElements: { - metadata: true, - subject: false, - body: false, - }, - }, -]; - -export const SettingsAccountsInboxSettingsVisibilitySection = ({ - onChange, - value = InboxSettingsVisibilityValue.Everything, -}: SettingsAccountsInboxSettingsVisibilitySectionProps) => ( -
- - - {inboxSettingsVisibilityOptions.map( - ( - { title, description, value: optionValue, visibleElements }, - index, - ) => ( - onChange(optionValue)} - > - - - - - -
- {title} - {description} -
- onChange(optionValue)} - checked={value === optionValue} - /> -
- ), - )} -
-
-); diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsInboxVisibilitySettingsCard.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsInboxVisibilitySettingsCard.tsx new file mode 100644 index 000000000..6c9713aa3 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsInboxVisibilitySettingsCard.tsx @@ -0,0 +1,63 @@ +import { SettingsAccountsRadioSettingsCard } from '@/settings/accounts/components/SettingsAccountsRadioSettingsCard'; +import { SettingsAccountsVisibilitySettingCardMedia } from '@/settings/accounts/components/SettingsAccountsVisibilitySettingCardMedia'; + +export enum InboxSettingsVisibilityValue { + Everything = 'share_everything', + SubjectMetadata = 'subject', + Metadata = 'metadata', +} + +type SettingsAccountsInboxVisibilitySettingsCardProps = { + onChange: (nextValue: InboxSettingsVisibilityValue) => void; + value?: InboxSettingsVisibilityValue; +}; + +const inboxSettingsVisibilityOptions = [ + { + title: 'Everything', + description: 'Subject, body and attachments will be shared with your team.', + value: InboxSettingsVisibilityValue.Everything, + cardMedia: ( + + ), + }, + { + title: 'Subject and metadata', + description: 'Subject and metadata will be shared with your team.', + value: InboxSettingsVisibilityValue.SubjectMetadata, + cardMedia: ( + + ), + }, + { + title: 'Metadata', + description: 'Timestamp and participants will be shared with your team.', + value: InboxSettingsVisibilityValue.Metadata, + cardMedia: ( + + ), + }, +]; + +export const SettingsAccountsInboxVisibilitySettingsCard = ({ + onChange, + value = InboxSettingsVisibilityValue.Everything, +}: SettingsAccountsInboxVisibilitySettingsCardProps) => ( + +); diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRadioSettingsCard.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRadioSettingsCard.tsx new file mode 100644 index 000000000..2075d6872 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRadioSettingsCard.tsx @@ -0,0 +1,73 @@ +import { ReactNode } from 'react'; +import styled from '@emotion/styled'; + +import { Radio } from '@/ui/input/components/Radio'; +import { Card } from '@/ui/layout/card/components/Card'; +import { CardContent } from '@/ui/layout/card/components/CardContent'; + +type SettingsAccountsRadioSettingsCardProps
+ } title="Sync events" - isEnabled={false} + value={false} onToggle={() => {}} /> diff --git a/packages/twenty-front/src/pages/settings/accounts/SettingsAccountsEmailsInboxSettings.tsx b/packages/twenty-front/src/pages/settings/accounts/SettingsAccountsEmailsInboxSettings.tsx index d45f8b5a0..00b3f87d2 100644 --- a/packages/twenty-front/src/pages/settings/accounts/SettingsAccountsEmailsInboxSettings.tsx +++ b/packages/twenty-front/src/pages/settings/accounts/SettingsAccountsEmailsInboxSettings.tsx @@ -1,14 +1,16 @@ import { useEffect } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; +import { useTheme } from '@emotion/react'; import { MessageChannel } from '@/accounts/types/MessageChannel'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord'; +import { SettingsAccountsCardMedia } from '@/settings/accounts/components/SettingsAccountsCardMedia'; import { InboxSettingsVisibilityValue, - SettingsAccountsInboxSettingsVisibilitySection, -} from '@/settings/accounts/components/SettingsAccountsInboxSettingsVisibilitySection'; + SettingsAccountsInboxVisibilitySettingsCard, +} from '@/settings/accounts/components/SettingsAccountsInboxVisibilitySettingsCard'; import { SettingsAccountsToggleSettingCard } from '@/settings/accounts/components/SettingsAccountsToggleSettingCard'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; import { AppPath } from '@/types/AppPath'; @@ -19,6 +21,7 @@ import { Section } from '@/ui/layout/section/components/Section'; import { Breadcrumb } from '@/ui/navigation/bread-crumb/components/Breadcrumb'; export const SettingsAccountsEmailsInboxSettings = () => { + const theme = useTheme(); const navigate = useNavigate(); const { accountUuid: messageChannelId = '' } = useParams(); @@ -65,32 +68,33 @@ export const SettingsAccountsEmailsInboxSettings = () => { { children: messageChannel.handle || '' }, ]} /> - {/* TODO : discuss the desired sync behaviour */} - {/*
+ {/* TODO : discuss the desired sync behaviour and add Synchronization section */} +
- -
*/} - +
+ + + } title="Auto-creation" - isEnabled={!!messageChannel.isContactAutoCreationEnabled} + value={!!messageChannel.isContactAutoCreationEnabled} onToggle={handleContactAutoCreationToggle} />