diff --git a/packages/twenty-website/src/app/_components/ui/layout/HeaderDesktop.tsx b/packages/twenty-website/src/app/_components/ui/layout/HeaderDesktop.tsx
deleted file mode 100644
index 4b9232594..000000000
--- a/packages/twenty-website/src/app/_components/ui/layout/HeaderDesktop.tsx
+++ /dev/null
@@ -1,123 +0,0 @@
-'use client';
-
-import React from 'react';
-import styled from '@emotion/styled';
-
-import { ExternalArrow } from '@/app/_components/ui/icons/SvgIcons';
-
-import { GithubIcon } from '../icons/SvgIcons';
-
-import { Logo } from './Logo';
-
-const Nav = styled.nav`
- display: flex;
- flex-direction: row;
- flex-wrap: nowrap;
- justify-content: space-between;
- align-items: center;
- overflow: visible;
- padding: 12px 16px 12px 16px;
- position: relative;
- transform-origin: 50% 50% 0px;
- border-bottom: 1px solid rgba(20, 20, 20, 0.08);
-
- @media (max-width: 809px) {
- display: none;
- }
-`;
-
-const LinkList = styled.div`
- display: flex;
- flex-direction: row;
- gap: 2px;
-`;
-
-const ListItem = styled.a`
- color: rgb(71, 71, 71);
- text-decoration: none;
- display: flex;
- gap: 4px;
- align-items: center;
- border-radius: 8px;
- height: 40px;
- padding-left: 16px;
- padding-right: 16px;
- &:hover {
- background-color: #f1f1f1;
- }
-`;
-
-const LogoContainer = styled.div`
- display: flex;
- align-items: center;
- gap: 8px;
- width: 202px;
-`;
-
-const StyledButton = styled.div`
- display: flex;
- height: 40px;
- padding-left: 16px;
- padding-right: 16px;
- align-items: center;
- background-color: #000;
- color: #fff;
- border-radius: 8px;
- font-weight: 500;
- border: none;
- outline: inherit;
- cursor: pointer;
-`;
-
-const CallToActionContainer = styled.div`
- display: flex;
- align-items: center;
- gap: 8px;
- a {
- text-decoration: none;
- }
-`;
-
-const LinkNextToCTA = styled.a`
- display: flex;
- align-items: center;
- color: rgb(71, 71, 71);
- padding: 0px 16px 0px 16px;
- span {
- text-decoration: underline;
- }
-`;
-
-const CallToAction = () => {
- return (
-
-
- Sign in
-
-
- Get Started
-
-
- );
-};
-
-export const HeaderDesktop = () => {
- return (
-
- );
-};
diff --git a/packages/twenty-website/src/app/_components/ui/layout/header/HeaderDesktop.tsx b/packages/twenty-website/src/app/_components/ui/layout/header/HeaderDesktop.tsx
new file mode 100644
index 000000000..792df8119
--- /dev/null
+++ b/packages/twenty-website/src/app/_components/ui/layout/header/HeaderDesktop.tsx
@@ -0,0 +1,34 @@
+'use client';
+
+import React from 'react';
+
+import { ExternalArrow, GithubIcon } from '@/app/_components/ui/icons/SvgIcons';
+import { CallToAction } from '@/app/_components/ui/layout/header/callToAction';
+import {
+ DesktopNav,
+ LinkList,
+ ListItem,
+ LogoContainer,
+} from '@/app/_components/ui/layout/header/styled';
+import { Logo } from '@/app/_components/ui/layout/Logo';
+
+export const HeaderDesktop = () => {
+ return (
+
+
+
+
+
+ Story
+ Pricing
+
+ Docs
+
+
+ 8.3k
+
+
+
+
+ );
+};
diff --git a/packages/twenty-website/src/app/_components/ui/layout/header/HeaderMobile.tsx b/packages/twenty-website/src/app/_components/ui/layout/header/HeaderMobile.tsx
new file mode 100644
index 000000000..6c107822f
--- /dev/null
+++ b/packages/twenty-website/src/app/_components/ui/layout/header/HeaderMobile.tsx
@@ -0,0 +1,73 @@
+'use client';
+
+import { useState } from 'react';
+import { IBM_Plex_Mono } from 'next/font/google';
+
+import { ExternalArrow, GithubIcon } from '@/app/_components/ui/icons/SvgIcons';
+import { CallToAction } from '@/app/_components/ui/layout/header/callToAction';
+import {
+ HamburgerContainer,
+ HamburgerLine1,
+ HamburgerLine2,
+ ListItem,
+ LogoAddon,
+ LogoContainer,
+ MobileLinkList,
+ MobileMenu,
+ MobileNav,
+ NavOpen,
+} from '@/app/_components/ui/layout/header/styled';
+import { Logo } from '@/app/_components/ui/layout/Logo';
+
+const IBMPlexMono = IBM_Plex_Mono({
+ weight: '500',
+ subsets: ['latin'],
+ display: 'swap',
+});
+
+export const HeaderMobile = () => {
+ const isTwentyDev = false;
+
+ const [menuOpen, setMenuOpen] = useState(false);
+
+ const toggleMenu = () => {
+ setMenuOpen(!menuOpen);
+ };
+
+ return (
+
+
+
+
+ {isTwentyDev && (
+
+ for Developers
+
+ )}
+
+
+
+
+
+
+
+
+
+ Story
+ Pricing
+
+ Docs
+
+
+ 8.3k
+
+
+
+
+
+ );
+};
diff --git a/packages/twenty-website/src/app/_components/ui/layout/header/callToAction.tsx b/packages/twenty-website/src/app/_components/ui/layout/header/callToAction.tsx
new file mode 100644
index 000000000..bd0187910
--- /dev/null
+++ b/packages/twenty-website/src/app/_components/ui/layout/header/callToAction.tsx
@@ -0,0 +1,18 @@
+import {
+ CallToActionContainer,
+ LinkNextToCTA,
+ StyledButton,
+} from '@/app/_components/ui/layout/header/styled';
+
+export const CallToAction = () => {
+ return (
+
+
+ Sign in
+
+
+ Get Started
+
+
+ );
+};
diff --git a/packages/twenty-website/src/app/_components/ui/layout/header/index.tsx b/packages/twenty-website/src/app/_components/ui/layout/header/index.tsx
new file mode 100644
index 000000000..257c42071
--- /dev/null
+++ b/packages/twenty-website/src/app/_components/ui/layout/header/index.tsx
@@ -0,0 +1,13 @@
+'use client';
+
+import { HeaderDesktop } from '@/app/_components/ui/layout/header/HeaderDesktop';
+import { HeaderMobile } from '@/app/_components/ui/layout/header/HeaderMobile';
+
+export const AppHeader = () => {
+ return (
+ <>
+
+
+ >
+ );
+};
diff --git a/packages/twenty-website/src/app/_components/ui/layout/HeaderMobile.tsx b/packages/twenty-website/src/app/_components/ui/layout/header/styled.ts
similarity index 52%
rename from packages/twenty-website/src/app/_components/ui/layout/HeaderMobile.tsx
rename to packages/twenty-website/src/app/_components/ui/layout/header/styled.ts
index 8f510246d..406a16f4b 100644
--- a/packages/twenty-website/src/app/_components/ui/layout/HeaderMobile.tsx
+++ b/packages/twenty-website/src/app/_components/ui/layout/header/styled.ts
@@ -1,22 +1,27 @@
'use client';
-import { useState } from 'react';
import styled from '@emotion/styled';
-import { IBM_Plex_Mono } from 'next/font/google';
-import { ExternalArrow } from '@/app/_components/ui/icons/SvgIcons';
+import mq from '@/app/_components/ui/theme/mq';
-import { GithubIcon } from '../icons/SvgIcons';
+export const DesktopNav = styled.nav`
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ align-items: center;
+ overflow: visible;
+ padding: 12px 16px 12px 16px;
+ position: relative;
+ transform-origin: 50% 50% 0px;
+ border-bottom: 1px solid rgba(20, 20, 20, 0.08);
-import { Logo } from './Logo';
+ @media (max-width: 809px) {
+ display: none;
+ }
+`;
-const IBMPlexMono = IBM_Plex_Mono({
- weight: '500',
- subsets: ['latin'],
- display: 'swap',
-});
-
-const Nav = styled.nav`
+export const MobileNav = styled.nav`
display: flex;
flex-direction: row;
justify-content: space-between;
@@ -28,26 +33,32 @@ const Nav = styled.nav`
border-bottom: 1px solid rgba(20, 20, 20, 0.08);
height: 64px;
width: 100%;
- @media (min-width: 810px) {
- display: none;
- }
`;
-const LinkList = styled.div`
+export const LinkList = styled.div`
+ display: flex;
+ flex-direction: row;
+ gap: 2px;
+ ${mq({
+ marginRight: ['auto', 'auto', '0'],
+ })}
+`;
+
+export const MobileLinkList = styled.div`
display: flex;
flex-direction: column;
gap: 16px;
align-items: center;
`;
-const ListItem = styled.a`
+export const ListItem = styled.a`
color: rgb(71, 71, 71);
text-decoration: none;
display: flex;
gap: 4px;
align-items: center;
border-radius: 8px;
- height: 48px;
+ height: 40px;
padding-left: 16px;
padding-right: 16px;
&:hover {
@@ -55,21 +66,23 @@ const ListItem = styled.a`
}
`;
-const LogoContainer = styled.div`
+export const LogoContainer = styled.div`
display: flex;
align-items: center;
gap: 8px;
- width: 202px;
+ ${mq({
+ width: ['auto', 'auto', '202px'],
+ })}
`;
-const LogoAddon = styled.div`
+export const LogoAddon = styled.div`
font-size: 12px;
font-style: normal;
font-weight: 500;
line-height: 150%;
`;
-const StyledButton = styled.div`
+export const StyledButton = styled.div`
display: flex;
height: 40px;
padding-left: 16px;
@@ -84,7 +97,7 @@ const StyledButton = styled.div`
cursor: pointer;
`;
-const CallToActionContainer = styled.div`
+export const CallToActionContainer = styled.div`
display: flex;
align-items: center;
gap: 8px;
@@ -93,7 +106,7 @@ const CallToActionContainer = styled.div`
}
`;
-const LinkNextToCTA = styled.a`
+export const LinkNextToCTA = styled.a`
display: flex;
align-items: center;
color: rgb(71, 71, 71);
@@ -103,20 +116,7 @@ const LinkNextToCTA = styled.a`
}
`;
-const CallToAction = () => {
- return (
-
-
- Sign in
-
-
- Get Started
-
-
- );
-};
-
-const HamburgerContainer = styled.div`
+export const HamburgerContainer = styled.div`
height: 44px;
width: 44px;
cursor: pointer;
@@ -146,7 +146,7 @@ const HamburgerContainer = styled.div`
}
`;
-const HamburgerLine1 = styled.div`
+export const HamburgerLine1 = styled.div`
height: 2px;
left: calc(50.00000000000002% - 20px / 2);
position: absolute;
@@ -156,7 +156,7 @@ const HamburgerLine1 = styled.div`
background-color: rgb(179, 179, 179);
`;
-const HamburgerLine2 = styled.div`
+export const HamburgerLine2 = styled.div`
height: 2px;
left: calc(50.00000000000002% - 20px / 2);
position: absolute;
@@ -166,7 +166,7 @@ const HamburgerLine2 = styled.div`
background-color: rgb(179, 179, 179);
`;
-const NavOpen = styled.div`
+export const NavOpen = styled.div`
flex-direction: column;
align-items: center;
position: fixed;
@@ -181,55 +181,11 @@ const NavOpen = styled.div`
transform-origin: top;
`;
-const MobileMenu = styled.div`
+export const MobileMenu = styled.div`
display: flex;
flex-direction: column;
width: 100%;
+ @media (min-width: 810px) {
+ display: none;
+ }
`;
-
-export const HeaderMobile = () => {
- const isTwentyDev = false;
-
- const [menuOpen, setMenuOpen] = useState(false);
-
- const toggleMenu = () => {
- setMenuOpen(!menuOpen);
- };
-
- return (
-
-
-
-
- Story
- Pricing
-
- Docs
-
-
- 8.3k
-
-
-
-
-
- );
-};
diff --git a/packages/twenty-website/src/app/layout.tsx b/packages/twenty-website/src/app/layout.tsx
index f98e00ebf..7ac3fe181 100644
--- a/packages/twenty-website/src/app/layout.tsx
+++ b/packages/twenty-website/src/app/layout.tsx
@@ -1,10 +1,9 @@
import { Metadata } from 'next';
import { Gabarito, Inter } from 'next/font/google';
-import { HeaderMobile } from '@/app/_components/ui/layout/HeaderMobile';
+import { AppHeader } from '@/app/_components/ui/layout/header';
import { FooterDesktop } from './_components/ui/layout/FooterDesktop';
-import { HeaderDesktop } from './_components/ui/layout/HeaderDesktop';
import EmotionRootStyleRegistry from './emotion-root-style-registry';
import './layout.css';
@@ -40,11 +39,8 @@ export default function RootLayout({
-
-
-
- {children}
-
+
+ {children}