diff --git a/packages/twenty-front/src/modules/settings/integrations/assets/preview-background.svg b/packages/twenty-front/src/modules/settings/integrations/assets/preview-background.svg new file mode 100644 index 000000000000..b9fe4a3171e7 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/integrations/assets/preview-background.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/twenty-front/src/modules/settings/integrations/assets/sync.svg b/packages/twenty-front/src/modules/settings/integrations/assets/sync.svg new file mode 100644 index 000000000000..b1d10480e071 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/integrations/assets/sync.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/twenty-front/src/modules/settings/integrations/components/SettingsIntegrationPreview.tsx b/packages/twenty-front/src/modules/settings/integrations/components/SettingsIntegrationPreview.tsx new file mode 100644 index 000000000000..4b66adedc0c8 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/integrations/components/SettingsIntegrationPreview.tsx @@ -0,0 +1,77 @@ +import styled from '@emotion/styled'; + +import { Card } from '@/ui/layout/card/components/Card'; +import { CardContent } from '@/ui/layout/card/components/CardContent'; + +import PreviewBackgroundImage from '../assets/preview-background.svg'; +import SyncImage from '../assets/sync.svg?react'; + +type SettingsIntegrationPreviewProps = { + integrationLogoUrl: string; +}; + +const StyledCard = styled(Card)` + border: 0; +`; + +const StyledCardContent = styled(CardContent)` + background-image: url(${PreviewBackgroundImage}); + align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + gap: ${({ theme }) => theme.spacing(1)}; + height: ${({ theme }) => theme.spacing(28)}; +`; + +const StyledLogosContainer = styled.div` + align-items: center; + display: flex; + justify-content: center; + gap: ${({ theme }) => theme.spacing(4)}; +`; + +const StyledIntegrationLogoContainer = styled.div` + align-items: center; + display: flex; + height: ${({ theme }) => theme.spacing(16)}; + justify-content: center; + width: ${({ theme }) => theme.spacing(16)}; +`; + +const StyledIntegrationLogo = styled.img` + height: 100%; +`; + +const StyledTwentyLogo = styled.img` + height: ${({ theme }) => theme.spacing(12)}; + padding: ${({ theme }) => theme.spacing(2)}; +`; + +const StyledSyncImage = styled(SyncImage)` + width: ${({ theme }) => theme.spacing(31)}; +`; + +const StyledLabel = styled.div` + color: ${({ theme }) => theme.font.color.tertiary}; + font-size: ${({ theme }) => theme.font.size.sm}; + font-weight: ${({ theme }) => theme.font.weight.medium}; + line-height: ${({ theme }) => theme.spacing(6)}; +`; + +export const SettingsIntegrationPreview = ({ + integrationLogoUrl, +}: SettingsIntegrationPreviewProps) => ( + + + + + + + + + + Import your tables as remote objects + + +); diff --git a/packages/twenty-front/src/pages/settings/integrations/SettingsIntegrationDetail.tsx b/packages/twenty-front/src/pages/settings/integrations/SettingsIntegrationDetail.tsx index bbbbd72a11af..823012fed51b 100644 --- a/packages/twenty-front/src/pages/settings/integrations/SettingsIntegrationDetail.tsx +++ b/packages/twenty-front/src/pages/settings/integrations/SettingsIntegrationDetail.tsx @@ -2,6 +2,7 @@ import { useEffect } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; +import { SettingsIntegrationPreview } from '@/settings/integrations/components/SettingsIntegrationPreview'; import { useSettingsIntegrationCategories } from '@/settings/integrations/hooks/useSettingsIntegrationCategories'; import { AppPath } from '@/types/AppPath'; import { IconSettings } from '@/ui/display/icon'; @@ -46,6 +47,9 @@ export const SettingsIntegrationDetail = () => { { children: integration.text }, ]} /> + );