From d7e31ab2f06411cf8a45f84ca867ab9d432e30ec Mon Sep 17 00:00:00 2001 From: "Abdullah." <125115953+mabdullahabaid@users.noreply.github.com> Date: Thu, 2 Apr 2026 18:45:22 +0500 Subject: [PATCH] Interactive home visual for website. (#19261) This PR makes the Home Visual interactive. Not the perfect code, but does the trick for now to convey what we're trying to do. As per the conversation with Thomas, we will iterate over it and make it better when we get past the first release. --------- Co-authored-by: Thomas des Francs --- packages/twenty-website-new/package.json | 1 + .../public/images/home/logo-bar/bayer.png | Bin 0 -> 131828 bytes .../images/home/logo-bar/french-republic.png | Bin 0 -> 14459 bytes .../images/home/logo-bar/others-icon.svg | 3 + .../images/home/logo-bar/others-shape.svg | 3 + .../public/images/home/logo-bar/pwc.png | Bin 0 -> 7744 bytes .../public/images/home/logo-bar/xero.png | Bin 0 -> 7615 bytes .../src/app/(home)/constants/hero.ts | 648 +++++- .../src/app/(home)/constants/trusted-by.ts | 11 +- .../src/app/(home)/page.tsx | 5 +- .../twenty-website-new/src/app/layout.tsx | 3 +- .../twenty-website-new/src/icons/index.ts | 24 +- .../Hero/components/HomeVisual/HomeVisual.tsx | 2013 ++++++++++++++++- .../components/HomeVisual/homeVisualChip.tsx | 138 ++ .../components/HomeVisual/homeVisualTokens.ts | 67 + .../src/sections/Hero/types/HeroHomeData.ts | 109 +- .../src/sections/Hero/types/index.ts | 20 +- .../components/ClientCount/ClientCount.tsx | 43 +- .../TrustedBy/components/Logo/Logo.tsx | 39 +- .../TrustedBy/components/Logos/Logos.tsx | 46 +- .../TrustedBy/components/Root/Root.tsx | 2 +- .../sections/TrustedBy/types/TrustedByData.ts | 14 +- .../TrustedBy/types/TrustedByLogos.ts | 5 +- yarn.lock | 19 + 24 files changed, 3081 insertions(+), 132 deletions(-) create mode 100644 packages/twenty-website-new/public/images/home/logo-bar/bayer.png create mode 100644 packages/twenty-website-new/public/images/home/logo-bar/french-republic.png create mode 100644 packages/twenty-website-new/public/images/home/logo-bar/others-icon.svg create mode 100644 packages/twenty-website-new/public/images/home/logo-bar/others-shape.svg create mode 100644 packages/twenty-website-new/public/images/home/logo-bar/pwc.png create mode 100644 packages/twenty-website-new/public/images/home/logo-bar/xero.png create mode 100644 packages/twenty-website-new/src/sections/Hero/components/HomeVisual/homeVisualChip.tsx create mode 100644 packages/twenty-website-new/src/sections/Hero/components/HomeVisual/homeVisualTokens.ts diff --git a/packages/twenty-website-new/package.json b/packages/twenty-website-new/package.json index c4ad1d9804..45a0a2707f 100644 --- a/packages/twenty-website-new/package.json +++ b/packages/twenty-website-new/package.json @@ -12,6 +12,7 @@ "@base-ui/utils": "^0.2.6", "@linaria/core": "^7.0.0", "@linaria/react": "^7.0.1", + "@tabler/icons-react": "^3.41.1", "@wyw-in-js/babel-preset": "^0.8.1", "next": "16.1.7", "next-with-linaria": "^1.3.0", diff --git a/packages/twenty-website-new/public/images/home/logo-bar/bayer.png b/packages/twenty-website-new/public/images/home/logo-bar/bayer.png new file mode 100644 index 0000000000000000000000000000000000000000..29ed956a1a36c79078f2e8598d6f958a8ace7ed8 GIT binary patch literal 131828 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 literal 0 HcmV?d00001 diff --git a/packages/twenty-website-new/public/images/home/logo-bar/french-republic.png b/packages/twenty-website-new/public/images/home/logo-bar/french-republic.png new file mode 100644 index 0000000000000000000000000000000000000000..b02fae1db73ec94d7afe98d90f765cfbc3cc0461 GIT binary patch literal 14459 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 N002ovPDHLkV1gPADK`KB literal 0 HcmV?d00001 diff --git a/packages/twenty-website-new/public/images/home/logo-bar/others-icon.svg b/packages/twenty-website-new/public/images/home/logo-bar/others-icon.svg new file mode 100644 index 0000000000..e8c14791e3 --- /dev/null +++ b/packages/twenty-website-new/public/images/home/logo-bar/others-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/twenty-website-new/public/images/home/logo-bar/others-shape.svg b/packages/twenty-website-new/public/images/home/logo-bar/others-shape.svg new file mode 100644 index 0000000000..db8e890007 --- /dev/null +++ b/packages/twenty-website-new/public/images/home/logo-bar/others-shape.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/twenty-website-new/public/images/home/logo-bar/pwc.png b/packages/twenty-website-new/public/images/home/logo-bar/pwc.png new file mode 100644 index 0000000000000000000000000000000000000000..e69ba0f7512cb1d292c2732ebe94fe2ebcb628af GIT binary patch literal 7744 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 - + diff --git a/packages/twenty-website-new/src/app/layout.tsx b/packages/twenty-website-new/src/app/layout.tsx index d0d6e1a779..d8e50b63e5 100644 --- a/packages/twenty-website-new/src/app/layout.tsx +++ b/packages/twenty-website-new/src/app/layout.tsx @@ -6,6 +6,7 @@ import { css } from '@linaria/core'; import { styled } from '@linaria/react'; import type { Metadata } from 'next'; import { Aleo, Azeret_Mono, Host_Grotesk } from 'next/font/google'; +import '../../../twenty-ui/dist/theme-light.css'; const hostGrotesk = Host_Grotesk({ subsets: ['latin'], @@ -65,7 +66,7 @@ export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode }>) { return ( - + diff --git a/packages/twenty-website-new/src/icons/index.ts b/packages/twenty-website-new/src/icons/index.ts index 5fb9c89d62..a19fe73309 100644 --- a/packages/twenty-website-new/src/icons/index.ts +++ b/packages/twenty-website-new/src/icons/index.ts @@ -1,4 +1,13 @@ -export { CLIENT_ICONS, FlexportIcon, ZapierIcon } from "./clients"; +export { CLIENT_ICONS, FlexportIcon, ZapierIcon } from './clients'; +export { ArrowLeftIcon } from './functional/ArrowLeft'; +export { ArrowRightIcon } from './functional/ArrowRight'; +export { ArrowRightUpIcon } from './functional/ArrowRightUp'; +export { CloseIcon } from './functional/Close'; +export { MenuIcon } from './functional/Menu'; +export { MinusIcon } from './functional/Minus'; +export { PlusIcon } from './functional/Plus'; +export { RectangleFillIcon } from './functional/RectangleFill'; +export { RectangleOutlineIcon } from './functional/RectangleOutline'; export { CheckIcon, EditIcon, @@ -7,17 +16,8 @@ export { SearchIcon, UsersIcon, type InformativeIconProps, -} from "./informative"; -export { ArrowLeftIcon } from "./functional/ArrowLeft"; -export { ArrowRightIcon } from "./functional/ArrowRight"; -export { ArrowRightUpIcon } from "./functional/ArrowRightUp"; -export { CloseIcon } from "./functional/Close"; -export { MenuIcon } from "./functional/Menu"; -export { MinusIcon } from "./functional/Minus"; -export { PlusIcon } from "./functional/Plus"; -export { RectangleFillIcon } from "./functional/RectangleFill"; -export { RectangleOutlineIcon } from "./functional/RectangleOutline"; -export { Logo } from "./logo/Logo"; +} from './informative'; +export { Logo } from './logo/Logo'; export { DiscordIcon, GitHubIcon, diff --git a/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/HomeVisual.tsx b/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/HomeVisual.tsx index c8eb569ad4..9d5068b201 100644 --- a/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/HomeVisual.tsx +++ b/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/HomeVisual.tsx @@ -1,63 +1,2004 @@ -import { Image } from '@/design-system/components'; -import type { ImageType } from '@/design-system/components/Image/types/Image'; +'use client'; + import { theme } from '@/theme'; import { styled } from '@linaria/react'; +import { + IconBook, + IconBox, + IconBrandApple, + IconBrandLinkedin, + IconBuildingFactory2, + IconBuildingSkyscraper, + IconCalendarEvent, + IconCheck, + IconCheckbox, + IconChevronDown, + IconCopy, + IconCreativeCommonsSa, + IconDotsVertical, + IconFolder, + IconHome2, + IconLayoutSidebarLeftCollapse, + IconLink, + IconList, + IconMap2, + IconMessageCircle, + IconMessageCirclePlus, + IconMoneybag, + IconNotes, + IconPencil, + IconPlayerPlay, + IconPlus, + IconSearch, + IconSettings, + IconSettingsAutomation, + IconTarget, + IconTargetArrow, + IconUser, + IconUserCircle, + IconUsers, + IconVersions, + IconX, +} from '@tabler/icons-react'; +import { + useEffect, + useMemo, + useRef, + useState, + type ReactNode, + type PointerEvent as ReactPointerEvent, +} from 'react'; +import type { + HeroCellEntity, + HeroCellPerson, + HeroCellRelation, + HeroCellValue, + HeroColumnDef, + HeroRowDef, + HeroSidebarEntry, + HeroSidebarFolder, + HeroSidebarIcon, + HeroSidebarItem, + HeroVisualType, +} from '../../types/HeroHomeData'; +import { Chip, ChipVariant } from './homeVisualChip'; +import { VISUAL_TOKENS } from './homeVisualTokens'; + +const APP_FONT = VISUAL_TOKENS.font.family; +const DEFAULT_TABLE_WIDTH = 1700; + +const COLORS = { + accent: VISUAL_TOKENS.accent.accent9, + accentBorder: VISUAL_TOKENS.border.color.blue, + accentSurface: VISUAL_TOKENS.accent.primary, + accentSurfaceSoft: VISUAL_TOKENS.background.transparent.blue, + background: VISUAL_TOKENS.background.primary, + backgroundSecondary: VISUAL_TOKENS.background.secondary, + border: VISUAL_TOKENS.border.color.medium, + borderLight: VISUAL_TOKENS.border.color.light, + borderStrong: VISUAL_TOKENS.border.color.strong, + shadow: '0 14px 34px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.04)', + text: VISUAL_TOKENS.font.color.primary, + textSecondary: VISUAL_TOKENS.font.color.secondary, + textTertiary: VISUAL_TOKENS.font.color.tertiary, + textLight: VISUAL_TOKENS.font.color.light, +}; + +const SIDEBAR_TONES: Record< + string, + { background: string; border: string; color: string } +> = { + amber: { background: '#fff4d6', border: '#ffd49b', color: '#9a6700' }, + blue: { background: '#d9e2fc', border: '#c6d4f9', color: '#3557c6' }, + gray: { background: '#ebebeb', border: '#d6d6d6', color: '#666666' }, + green: { background: '#ccebd7', border: '#bbe4c9', color: '#153226' }, + orange: { background: '#ffdcc3', border: '#ffcca7', color: '#582d1d' }, + pink: { background: '#ffe1e7', border: '#ffc8d6', color: '#a51853' }, + purple: { background: '#e0e7ff', border: '#c7d2fe', color: '#4f46e5' }, + teal: { background: '#c7ebe5', border: '#b3e3dc', color: '#10302b' }, + violet: { background: '#ebe5ff', border: '#d8cbff', color: '#5b3fd1' }, + red: { background: '#fee2e2', border: '#fecaca', color: '#b91c1c' }, +}; + +const PERSON_TONES: Record = { + amber: { background: '#f6e6d7', color: '#7a4f2a' }, + blue: { background: '#dbeafe', color: '#1d4ed8' }, + gray: { background: '#e5e7eb', color: '#4b5563' }, + green: { background: '#dcfce7', color: '#15803d' }, + pink: { background: '#ffe4e6', color: '#be123c' }, + purple: { background: '#ede9fe', color: '#6d28d9' }, + red: { background: '#fee2e2', color: '#b91c1c' }, + teal: { background: '#ccfbf1', color: '#0f766e' }, +}; + +const TABLER_STROKE = 1.6; +const NAVIGATION_TABLER_STROKE = 2; + +// -- Styled Components -- const StyledHomeVisual = styled.div` - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 1fr; + isolation: isolate; margin-top: ${theme.spacing(5)}; position: relative; - right: calc(${theme.spacing(2)} - ${theme.spacing(6)}); + text-align: left; width: 100%; @media (min-width: ${theme.breakpoints.md}px) { - height: 500px; - margin-top: ${theme.spacing(17.5)}; - overflow: hidden; - right: 0; + margin-top: ${theme.spacing(11)}; } `; -const StyledBackgroundImage = styled(Image)` - grid-area: 1 / 1; - justify-self: end; - width: 98%; - - @media (min-width: ${theme.breakpoints.md}px) { - max-width: 850px; - width: 100%; - } +const ShellScene = styled.div` + margin: 0 auto; + max-width: 980px; + transform-origin: center top; + transition: transform 0.18s ease; + width: 100%; `; -const StyledForegroundImage = styled(Image)` - grid-area: 1 / 1; - justify-self: end; - margin-right: ${theme.spacing(6.5)}; - margin-top: ${theme.spacing(20)}; - width: 98%; +const Frame = styled.div` + aspect-ratio: 1280 / 832; + background-color: ${COLORS.background}; + background-image: radial-gradient( + circle at top center, + rgba(0, 0, 0, 0.035), + rgba(0, 0, 0, 0) 55% + ), + ${VISUAL_TOKENS.background.noisy}; + background-position: + center top, + center; + background-repeat: no-repeat, repeat; + border: 1px solid ${COLORS.border}; + border-radius: 8px; + box-shadow: ${COLORS.shadow}; + overflow: hidden; + position: relative; +`; + +const AppLayout = styled.div` + display: grid; + grid-template-columns: 72px minmax(0, 1fr); + height: 100%; + position: relative; z-index: 1; @media (min-width: ${theme.breakpoints.md}px) { - justify-self: center; - margin-right: ${theme.spacing(40)}; - margin-top: ${theme.spacing(17.5)}; - max-width: 800px; - width: 100%; + grid-template-columns: 220px minmax(0, 1fr); } `; -type HomeVisualProps = { - background: ImageType; - foreground: ImageType; +const SidebarPanel = styled.aside` + background: transparent; + border-right: 1px solid rgba(0, 0, 0, 0.04); + display: grid; + gap: 12px; + grid-template-rows: auto auto minmax(0, 1fr); + padding: 12px 8px; +`; + +const SidebarTopBar = styled.div` + align-items: center; + display: grid; + gap: 8px; + grid-template-columns: minmax(0, 1fr) auto; + min-height: 32px; +`; + +const WorkspaceMenu = styled.div` + align-items: center; + display: grid; + gap: 8px; + grid-template-columns: auto 1fr auto; + min-width: 0; + padding: 6px 4px; +`; + +const WorkspaceIcon = styled.div` + align-items: center; + background: #111111; + border-radius: 2px; + color: #ffffff; + display: flex; + font-family: ${APP_FONT}; + font-size: 11px; + font-weight: ${theme.font.weight.medium}; + height: 16px; + justify-content: center; + width: 16px; +`; + +const WorkspaceLabel = styled.span` + color: ${COLORS.text}; + display: none; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.medium}; + line-height: 1.4; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + @media (min-width: ${theme.breakpoints.md}px) { + display: block; + } +`; + +const SidebarTopActions = styled.div` + align-items: center; + display: grid; + gap: 2px; + grid-auto-flow: column; +`; + +const SidebarIconButton = styled.div` + align-items: center; + border-radius: 4px; + display: flex; + height: 24px; + justify-content: center; + width: 24px; +`; + +const SidebarControls = styled.div` + align-items: center; + display: grid; + gap: 8px; + grid-template-columns: auto 1fr; +`; + +const SegmentedRail = styled.div` + background: rgba(252, 252, 252, 0.8); + border: 1px solid ${COLORS.border}; + border-radius: 40px; + display: grid; + gap: 2px; + grid-auto-flow: column; + padding: 3px; +`; + +const Segment = styled.div<{ $selected?: boolean }>` + align-items: center; + background: ${({ $selected }) => + $selected ? 'rgba(0, 0, 0, 0.04)' : 'transparent'}; + border-radius: 16px; + display: flex; + height: 22px; + justify-content: center; + width: 22px; +`; + +const NewChat = styled.div` + align-items: center; + background: ${COLORS.backgroundSecondary}; + border: 1px solid ${COLORS.border}; + border-radius: 40px; + color: ${COLORS.textSecondary}; + display: flex; + gap: 4px; + height: 28px; + justify-content: center; + min-width: 0; + padding: 3px; + width: 28px; + + @media (min-width: ${theme.breakpoints.md}px) { + width: 103px; + } +`; + +const NewChatLabel = styled.span` + display: none; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.medium}; + line-height: 1.4; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + @media (min-width: ${theme.breakpoints.md}px) { + display: block; + } +`; + +const SidebarScroll = styled.div` + display: grid; + gap: 12px; + min-height: 0; + overflow: hidden; +`; + +const SidebarSection = styled.div` + display: grid; + gap: 2px; +`; + +const SidebarSectionLabel = styled.span` + color: ${COLORS.textLight}; + display: none; + font-family: ${APP_FONT}; + font-size: 11px; + font-weight: 600; + line-height: 1; + padding: 0 4px 4px; + + @media (min-width: ${theme.breakpoints.md}px) { + display: block; + } +`; + +const SidebarItemRow = styled.div<{ + $active?: boolean; + $depth?: number; +}>` + align-items: center; + background: ${({ $active }) => + $active ? 'rgba(0, 0, 0, 0.04)' : 'transparent'}; + border-radius: 4px; + display: grid; + gap: 8px; + grid-template-columns: auto minmax(0, 1fr) auto; + height: 28px; + padding: 0 2px 0 ${({ $depth = 0 }) => `${$depth === 0 ? 4 : 24}px`}; + position: relative; +`; + +const SidebarIconSurface = styled.div<{ + $background: string; + $border: string; + $color: string; +}>` + align-items: center; + background: ${({ $background }) => $background}; + border: 1px solid ${({ $border }) => $border}; + border-radius: 4px; + color: ${({ $color }) => $color}; + display: flex; + flex: 0 0 auto; + height: 16px; + justify-content: center; + position: relative; + width: 16px; +`; + +const SidebarItemText = styled.div` + align-items: center; + display: flex; + gap: 2px; + min-width: 0; +`; + +const SidebarItemLabel = styled.span` + color: ${COLORS.textSecondary}; + display: none; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.medium}; + line-height: 1.4; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + @media (min-width: ${theme.breakpoints.md}px) { + display: block; + } +`; + +const SidebarItemMeta = styled.span` + color: ${COLORS.textLight}; + display: none; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.medium}; + line-height: 1.4; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + @media (min-width: ${theme.breakpoints.md}px) { + display: block; + } +`; + +const SidebarChevron = styled.div` + color: ${COLORS.textTertiary}; + display: none; + + @media (min-width: ${theme.breakpoints.md}px) { + display: flex; + } +`; + +const SidebarChildStack = styled.div` + display: grid; + gap: 2px; + position: relative; +`; + +const BranchLine = styled.div` + background: ${COLORS.borderStrong}; + bottom: 14px; + left: 15px; + position: absolute; + top: 0; + width: 1px; +`; + +const SidebarAvatar = styled.div<{ + $background: string; + $color: string; + $shape?: 'circle' | 'square'; +}>` + align-items: center; + background: ${({ $background }) => $background}; + border-radius: ${({ $shape }) => ($shape === 'square' ? '4px' : '999px')}; + color: ${({ $color }) => $color}; + display: flex; + flex: 0 0 auto; + font-family: ${APP_FONT}; + font-size: 10px; + font-weight: ${theme.font.weight.medium}; + height: 16px; + justify-content: center; + line-height: 1; + width: 16px; +`; + +const RightPane = styled.div` + display: grid; + gap: 12px; + grid-template-rows: 32px minmax(0, 1fr); + min-width: 0; + padding: 12px 8px 12px 0; + + @media (min-width: ${theme.breakpoints.md}px) { + padding-right: 12px; + } +`; + +const NavbarBar = styled.div` + align-items: center; + background: transparent; + display: flex; + justify-content: space-between; + min-width: 0; +`; + +const Breadcrumb = styled.div` + align-items: center; + display: flex; + gap: 2px; + min-width: 0; +`; + +const BreadcrumbTag = styled.div` + align-items: center; + display: flex; + gap: 4px; + height: 20px; + min-width: 0; + padding: 0 2px; +`; + +const AccentIconSurface = styled.div` + align-items: center; + background: ${COLORS.accentSurface}; + border: 1px solid ${COLORS.accentBorder}; + border-radius: 4px; + color: ${COLORS.accent}; + display: flex; + height: 16px; + justify-content: center; + width: 16px; +`; + +const CrumbLabel = styled.span` + color: ${COLORS.text}; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.medium}; + line-height: 1.4; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +`; + +const NavbarActions = styled.div` + align-items: center; + display: flex; + gap: 8px; + pointer-events: none; +`; + +const DesktopOnlyNavbarAction = styled.div` + display: none; + + @media (min-width: ${theme.breakpoints.md}px) { + display: block; + } +`; + +const NavbarDecorativeChip = styled.div` + align-items: center; + background: transparent; + border: 1px solid ${VISUAL_TOKENS.background.transparent.medium}; + border-radius: ${VISUAL_TOKENS.border.radius.sm}; + color: ${VISUAL_TOKENS.font.color.secondary}; + display: inline-flex; + font-family: ${APP_FONT}; + font-size: ${VISUAL_TOKENS.font.size.md}; + font-weight: ${VISUAL_TOKENS.font.weight.medium}; + gap: ${VISUAL_TOKENS.spacing[1]}; + height: 24px; + padding: 0 ${VISUAL_TOKENS.spacing[2]}; + white-space: nowrap; +`; + +const NavbarDecorativeIconWrap = styled.span` + align-items: center; + color: currentColor; + display: flex; + flex: 0 0 auto; + justify-content: center; +`; + +const IndexSurface = styled.div` + background: ${COLORS.background}; + border-radius: 8px; + display: grid; + grid-template-rows: 40px minmax(0, 1fr); + min-width: 0; + overflow: hidden; +`; + +const ViewbarBar = styled.div` + align-items: center; + background: ${COLORS.background}; + border-bottom: 1px solid ${COLORS.borderLight}; + display: flex; + justify-content: space-between; + padding: 8px 8px 8px 12px; +`; + +const ViewSwitcher = styled.div` + align-items: center; + display: flex; + gap: 4px; + height: 24px; + min-width: 0; + padding: 0 4px; +`; + +const ViewName = styled.span` + color: ${COLORS.textSecondary}; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.medium}; + line-height: 1.4; + white-space: nowrap; +`; + +const ViewCount = styled.span` + color: ${COLORS.textLight}; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.medium}; + line-height: 1.4; + white-space: nowrap; +`; + +const TinyDot = styled.div` + background: ${COLORS.borderStrong}; + border-radius: 999px; + height: 2px; + width: 2px; +`; + +const ViewActions = styled.div` + align-items: center; + display: flex; + gap: 2px; +`; + +const ViewAction = styled.span` + align-items: center; + border-radius: 4px; + color: ${COLORS.textSecondary}; + display: flex; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.regular}; + height: 24px; + line-height: 1.4; + padding: 4px 8px; + white-space: nowrap; +`; + +const TableShell = styled.div` + display: flex; + min-height: 0; +`; + +const GripRail = styled.div` + background: ${COLORS.background}; + display: grid; + flex: 0 0 12px; + grid-auto-rows: 32px; + width: 12px; +`; + +const GripCell = styled.div` + background: ${COLORS.background}; + border-bottom: 1px solid ${COLORS.borderLight}; +`; + +const TableViewport = styled.div<{ $dragging: boolean }>` + cursor: ${({ $dragging }) => ($dragging ? 'grabbing' : 'grab')}; + min-height: 0; + overflow-x: auto; + overflow-y: hidden; + overscroll-behavior-x: contain; + scrollbar-width: none; + + &::-webkit-scrollbar { + display: none; + } +`; + +const TableCanvas = styled.div<{ $width: number }>` + min-width: ${({ $width }) => `${$width}px`}; + width: ${({ $width }) => `${$width}px`}; +`; + +const HeaderRow = styled.div` + display: flex; +`; + +const DataRow = styled.div` + display: flex; +`; + +const FooterRow = styled.div` + display: flex; +`; + +const TableCell = styled.div<{ + $align?: 'left' | 'right'; + $header?: boolean; + $hovered?: boolean; + $sticky?: boolean; + $width: number; +}>` + align-items: center; + background: ${({ $header, $hovered }) => { + if ($header) { + return COLORS.background; + } + + return $hovered ? COLORS.backgroundSecondary : COLORS.background; + }}; + border-bottom: 1px solid ${COLORS.borderLight}; + border-right: 1px solid ${COLORS.borderLight}; + box-sizing: border-box; + display: flex; + flex: 0 0 ${({ $width }) => `${$width}px`}; + height: 32px; + justify-content: ${({ $align }) => + $align === 'right' ? 'flex-end' : 'flex-start'}; + left: ${({ $sticky }) => ($sticky ? '0' : 'auto')}; + min-width: ${({ $width }) => `${$width}px`}; + padding: 0 8px; + position: ${({ $sticky }) => ($sticky ? 'sticky' : 'relative')}; + z-index: ${({ $header, $sticky }) => { + if ($sticky && $header) { + return 6; + } + + if ($sticky) { + return 4; + } + + return 1; + }}; +`; + +const EmptyFillCell = styled.div<{ + $footer?: boolean; + $header?: boolean; + $hovered?: boolean; + $width: number; +}>` + background: ${({ $header, $hovered, $footer }) => { + if ($header || $footer) { + return COLORS.background; + } + + return $hovered ? COLORS.backgroundSecondary : COLORS.background; + }}; + border-bottom: 1px solid ${COLORS.borderLight}; + flex: 0 0 ${({ $width }) => `${$width}px`}; + min-width: ${({ $width }) => `${$width}px`}; +`; + +const HeaderCellContent = styled.div` + align-items: center; + display: flex; + gap: 4px; + height: 100%; + min-width: 0; + width: 100%; +`; + +const HeaderLabel = styled.span` + color: ${COLORS.textTertiary}; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.medium}; + line-height: 1.4; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +`; + +const EdgePlus = styled.div` + margin-left: auto; +`; + +const CheckboxContainer = styled.div` + align-items: center; + display: flex; + flex: 0 0 24px; + height: 24px; + justify-content: center; + width: 24px; +`; + +const CheckboxBox = styled.div<{ $checked?: boolean }>` + align-items: center; + background: ${({ $checked }) => + $checked ? COLORS.accentSurfaceSoft : 'transparent'}; + border: 1px solid + ${({ $checked }) => ($checked ? COLORS.accentBorder : COLORS.borderStrong)}; + border-radius: 3px; + display: flex; + flex: 0 0 auto; + height: 14px; + justify-content: center; + width: 14px; +`; + +const EntityCellLayout = styled.div` + align-items: center; + display: flex; + gap: 4px; + min-width: 0; + position: relative; + width: 100%; +`; + +const CellChip = styled(Chip)` + max-width: 100%; + min-width: 0; +`; + +const InlineText = styled.span` + color: ${COLORS.text}; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.regular}; + line-height: 1.4; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +`; + +const MutedText = styled.span` + color: ${COLORS.textTertiary}; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.regular}; + line-height: 1.4; + white-space: nowrap; +`; + +const RightAlignedText = styled(InlineText)` + text-align: right; + width: 100%; +`; + +const PersonAvatarCircle = styled.div<{ + $background: string; + $color: string; + $square?: boolean; +}>` + align-items: center; + background: ${({ $background }) => $background}; + border-radius: ${({ $square }) => ($square ? '4px' : '999px')}; + color: ${({ $color }) => $color}; + display: flex; + flex: 0 0 auto; + font-family: ${APP_FONT}; + font-size: 9px; + font-weight: ${theme.font.weight.medium}; + height: 14px; + justify-content: center; + overflow: hidden; + width: 14px; +`; + +const AvatarImage = styled.img` + display: block; + height: 100%; + object-fit: cover; + width: 100%; +`; + +const BooleanRow = styled.div` + align-items: center; + display: inline-flex; + gap: 4px; +`; + +const HoverActions = styled.div<{ $visible: boolean }>` + align-items: center; + background: ${COLORS.backgroundSecondary}; + border: 1px solid ${COLORS.border}; + border-radius: 4px; + box-shadow: ${VISUAL_TOKENS.boxShadow.light}; + display: flex; + gap: 2px; + opacity: ${({ $visible }) => ($visible ? 1 : 0)}; + padding: 2px; + pointer-events: none; + position: absolute; + right: 4px; + top: 4px; + transform: translateX(${({ $visible }) => ($visible ? '0' : '4px')}); + transition: + opacity 0.14s ease, + transform 0.14s ease; +`; + +const MiniAction = styled.div` + align-items: center; + border-radius: 2px; + color: ${COLORS.textSecondary}; + display: flex; + height: 20px; + justify-content: center; + width: 20px; +`; + +const FooterFirstContent = styled.div` + align-items: center; + display: inline-flex; + gap: 4px; + padding-left: 28px; +`; + +const HeaderFillContent = styled.div` + align-items: center; + display: flex; + height: 100%; + padding: 0 8px; +`; + +const TagChip = styled.div` + align-items: center; + background: ${VISUAL_TOKENS.background.transparent.light}; + border-radius: 4px; + color: ${COLORS.textSecondary}; + display: inline-flex; + font-family: ${APP_FONT}; + font-size: 13px; + font-weight: ${theme.font.weight.regular}; + height: 20px; + line-height: 1.4; + max-width: 100%; + min-width: 0; + overflow: hidden; + padding: 0 8px; + text-overflow: ellipsis; + white-space: nowrap; +`; + +const MultiChipStack = styled.div` + align-items: center; + display: flex; + gap: 4px; + min-width: 0; + overflow: hidden; + width: 100%; +`; + +const FaviconImage = styled.img` + display: block; + height: 100%; + object-fit: contain; + width: 100%; +`; + +// -- Icon helpers -- + +const TABLER_ICON_MAP: Record = { + book: IconBook, + box: IconBox, + buildingSkyscraper: IconBuildingSkyscraper, + checkbox: IconCheckbox, + folder: IconFolder, + notes: IconNotes, + playerPlay: IconPlayerPlay, + settings: IconSettings, + settingsAutomation: IconSettingsAutomation, + targetArrow: IconTargetArrow, + user: IconUser, + versions: IconVersions, }; -export function HomeVisual({ background, foreground }: HomeVisualProps) { +const HEADER_ICON_MAP: Record = { + added: IconCalendarEvent, + accountOwner: IconUserCircle, + address: IconMap2, + arr: IconMoneybag, + createdBy: IconCreativeCommonsSa, + employees: IconUsers, + icp: IconTarget, + industry: IconBuildingFactory2, + linkedin: IconBrandLinkedin, + mainContact: IconUser, + opportunities: IconTargetArrow, + url: IconLink, +}; + +// -- Utility functions -- + +const failedFaviconUrls = new Set(); + +function getInitials(value: string) { + return value + .split(' ') + .filter(Boolean) + .slice(0, 2) + .map((part) => part[0]) + .join('') + .toUpperCase(); +} + +function sanitizeURL(link: string | null | undefined) { + return link + ? link.replace(/(https?:\/\/)|(www\.)/g, '').replace(/\/$/, '') + : ''; +} + +function getLogoUrlFromDomainName(domainName?: string): string | undefined { + const sanitizedDomain = sanitizeURL(domainName); + + return sanitizedDomain + ? `https://twenty-icons.com/${sanitizedDomain}` + : undefined; +} + +function isFolder(entry: HeroSidebarEntry): entry is HeroSidebarFolder { + return 'items' in entry; +} + +function findActiveItem( + entries: HeroSidebarEntry[], + activeLabel: string, +): HeroSidebarItem | undefined { + for (const entry of entries) { + if (isFolder(entry)) { + for (const child of entry.items) { + if (child.label === activeLabel) { + return child; + } + } + + continue; + } + + if (entry.children) { + for (const child of entry.children) { + if (child.label === activeLabel) { + return child; + } + } + } + + if (entry.label === activeLabel) { + const entryHasTable = + (entry.columns?.length ?? 0) > 0 || (entry.rows?.length ?? 0) > 0; + + if (!entryHasTable && entry.children && entry.children.length > 0) { + const firstChildWithTable = entry.children.find( + (child) => + (child.columns?.length ?? 0) > 0 || (child.rows?.length ?? 0) > 0, + ); + + if (firstChildWithTable) { + return firstChildWithTable; + } + } + + return entry; + } + } + + return undefined; +} + +// -- Small icon wrappers -- + +type MiniIconProps = { + color?: string; + size?: number; + stroke?: number; +}; + +function ChevronDownMini({ + color = COLORS.textTertiary, + size = 14, +}: MiniIconProps) { + return ( + + ); +} + +function SearchMini({ color = COLORS.textTertiary, size = 16 }: MiniIconProps) { + return ( + + ); +} + +function CollapseSidebarMini({ + color = COLORS.textTertiary, + size = 16, +}: MiniIconProps) { + return ( + + ); +} + +function HomeMini({ color = COLORS.textSecondary, size = 16 }: MiniIconProps) { + return ( + + ); +} + +function CommentMini({ + color = COLORS.textTertiary, + size = 16, +}: MiniIconProps) { + return ( + + ); +} + +function MessageCirclePlusMini({ + color = COLORS.textSecondary, + size = 16, +}: MiniIconProps) { + return ( + + ); +} + +function LinkMini({ color = COLORS.textTertiary, size = 16 }: MiniIconProps) { + return ( + + ); +} + +function ListMini({ color = COLORS.textSecondary, size = 16 }: MiniIconProps) { + return ( + + ); +} + +function PlusMini({ color = COLORS.textSecondary, size = 14 }: MiniIconProps) { + return ( + + ); +} + +function CheckMini({ color = COLORS.text, size = 12 }: MiniIconProps) { + return ( + + ); +} + +function CloseMini({ color = COLORS.text, size = 12 }: MiniIconProps) { + return ; +} + +function PencilMini({ + color = COLORS.textSecondary, + size = 14, +}: MiniIconProps) { + return ( + + ); +} + +function CopyMini({ color = COLORS.textSecondary, size = 14 }: MiniIconProps) { + return ( + + ); +} + +// -- Favicon logo component -- + +function FaviconLogo({ + domain, + label, + size = 14, +}: { + domain?: string; + label?: string; + size?: number; +}) { + const faviconUrl = getLogoUrlFromDomainName(domain); + const [localFailedUrl, setLocalFailedUrl] = useState(null); + const showFavicon = + faviconUrl !== undefined && + !failedFaviconUrls.has(faviconUrl) && + localFailedUrl !== faviconUrl; + + const baseStyle = { + width: `${size}px`, + height: `${size}px`, + borderRadius: '4px', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flex: '0 0 auto', + overflow: 'hidden', + fontFamily: APP_FONT, + fontSize: size <= 14 ? '8px' : '9px', + fontWeight: 600, + lineHeight: 1, + } as const; + + if (showFavicon) { + return ( +
    + { + failedFaviconUrls.add(faviconUrl); + setLocalFailedUrl(faviconUrl); + }} + /> +
    + ); + } + + const initials = label ? getInitials(label) : '?'; + + return ( +
    + {initials.slice(0, 1)} +
    + ); +} + +// -- Sidebar icon rendering -- + +function renderSidebarIcon(icon: HeroSidebarIcon): ReactNode { + if (icon.kind === 'brand') { + return ( + + + {icon.overlay === 'link' ? ( +
    + +
    + ) : null} +
    + ); + } + + if (icon.kind === 'avatar') { + const tone = SIDEBAR_TONES[icon.tone] ?? SIDEBAR_TONES.gray; + + return ( + + + {icon.label} + + + ); + } + + const tone = SIDEBAR_TONES[icon.tone] ?? SIDEBAR_TONES.gray; + const TablerIcon = TABLER_ICON_MAP[icon.name]; + + return ( + + {TablerIcon ? ( + + ) : null} + {icon.overlay === 'link' ? ( +
    + +
    + ) : null} +
    + ); +} + +// -- Sidebar item component -- + +function SidebarItemComponent({ + depth = 0, + interactive = true, + item, + onSelect, + selectedLabel, +}: { + depth?: number; + interactive?: boolean; + item: HeroSidebarItem; + onSelect?: (label: string) => void; + selectedLabel?: string; +}) { + const rowActive = + interactive && selectedLabel !== undefined && item.label === selectedLabel; + + return ( + <> + onSelect?.(item.label) : undefined} + style={{ cursor: interactive ? 'pointer' : 'default' }} + > + {renderSidebarIcon(item.icon)} + + {item.label} + {item.meta ? ยท {item.meta} : null} + + {item.showChevron || (item.children && item.children.length > 0) ? ( + + + + ) : null} + + {item.children && item.children.length > 0 ? ( + + + {item.children.map((child) => ( + + ))} + + ) : null} + + ); +} + +// -- Cell rendering components -- + +function PersonTokenCell({ + token, + hovered = false, + withCopyAction = true, +}: { + token: HeroCellPerson; + hovered?: boolean; + withCopyAction?: boolean; +}) { + const tone = PERSON_TONES[token.tone ?? 'gray'] ?? PERSON_TONES.gray; + const square = + token.kind === 'api' || + token.kind === 'system' || + token.kind === 'workflow'; + + return ( +
    + + {token.avatarUrl ? ( + + ) : ( + (token.shortLabel ?? getInitials(token.name)) + )} + + } + /> + + {withCopyAction ? ( + + ) : null} + + +
    + ); +} + +function EntityCellComponent({ + cell, + hovered, + isFirstColumn, +}: { + cell: HeroCellEntity; + hovered: boolean; + isFirstColumn: boolean; +}) { + if (isFirstColumn) { + return ( + + + + + } + variant={ChipVariant.Highlighted} + /> + + + + + ); + } + + return ( + } + /> + ); +} + +function RelationCellComponent({ + cell, + hovered, +}: { + cell: HeroCellRelation; + hovered: boolean; +}) { + return ( +
    + + {cell.items.map((item) => { + const tone = PERSON_TONES[item.tone ?? 'gray'] ?? PERSON_TONES.gray; + + return ( + + {item.shortLabel ?? getInitials(item.name)} + + } + /> + ); + })} + + + + + +
    + ); +} + +function renderCellValue( + cell: HeroCellValue, + hovered: boolean, + isFirstColumn: boolean, +): ReactNode { + switch (cell.type) { + case 'text': + return {cell.value}; + case 'number': + return {cell.value}; + case 'link': + return ( +
    + + + + +
    + ); + case 'boolean': + return ( + + {cell.value ? : } + {cell.value ? 'True' : 'False'} + + ); + case 'tag': + return {cell.value}; + case 'person': + return ; + case 'entity': + return ( + + ); + case 'relation': + return ; + } +} + +// -- Main component -- + +export function HomeVisual({ visual }: { visual: HeroVisualType }) { + const shellRef = useRef(null); + const viewportRef = useRef(null); + const dragRef = useRef({ + active: false, + pointerId: -1, + startScrollLeft: 0, + startX: 0, + }); + + const defaultActiveLabel = + visual.workspaceNav.find((entry) => !isFolder(entry) && entry.active) + ?.label ?? + visual.workspaceNav[0]?.label ?? + ''; + + const [activeLabel, setActiveLabel] = useState(defaultActiveLabel); + const [dragging, setDragging] = useState(false); + const [hoveredRowId, setHoveredRowId] = useState(null); + const [tilt, setTilt] = useState({ x: 0, y: 0 }); + + const activeItem = useMemo( + () => findActiveItem(visual.workspaceNav, activeLabel), + [activeLabel, visual.workspaceNav], + ); + + const columns: HeroColumnDef[] = activeItem?.columns ?? []; + const rows: HeroRowDef[] = activeItem?.rows ?? []; + const viewLabel = activeItem?.viewLabel ?? activeLabel; + const viewCount = activeItem?.viewCount ?? rows.length; + const totalTableWidth = visual.tableWidth ?? DEFAULT_TABLE_WIDTH; + const actions = visual.actions ?? []; + + const columnWidth = columns.reduce((sum, column) => sum + column.width, 0); + const fillerWidth = Math.max(totalTableWidth - columnWidth, 0); + + const handleShellPointerMove = (event: ReactPointerEvent) => { + if (event.pointerType !== 'mouse' || dragging || !shellRef.current) { + return; + } + + const bounds = shellRef.current.getBoundingClientRect(); + const horizontal = ((event.clientX - bounds.left) / bounds.width - 0.5) * 2; + const vertical = ((event.clientY - bounds.top) / bounds.height - 0.5) * 2; + + setTilt({ + x: Number((-vertical * 2.2).toFixed(2)), + y: Number((horizontal * 3.8).toFixed(2)), + }); + }; + + const resetTilt = () => { + setTilt({ x: 0, y: 0 }); + }; + + const handlePointerDown = (event: ReactPointerEvent) => { + if ( + event.pointerType !== 'mouse' || + event.button !== 0 || + !viewportRef.current + ) { + return; + } + + dragRef.current = { + active: true, + pointerId: event.pointerId, + startScrollLeft: viewportRef.current.scrollLeft, + startX: event.clientX, + }; + + viewportRef.current.setPointerCapture(event.pointerId); + setDragging(true); + event.preventDefault(); + }; + + const handlePointerMove = (event: ReactPointerEvent) => { + if (!dragRef.current.active || !viewportRef.current) { + return; + } + + viewportRef.current.scrollLeft = + dragRef.current.startScrollLeft - + (event.clientX - dragRef.current.startX); + }; + + const endDragging = () => { + dragRef.current.active = false; + dragRef.current.pointerId = -1; + setDragging(false); + }; + + const handlePointerUp = (event: ReactPointerEvent) => { + if (!viewportRef.current || dragRef.current.pointerId !== event.pointerId) { + return; + } + + viewportRef.current.releasePointerCapture(event.pointerId); + endDragging(); + }; + + useEffect(() => { + const node = viewportRef.current; + + if (!node) { + return; + } + + const onWheel: EventListener = (event) => { + if (!(event instanceof WheelEvent)) { + return; + } + + if ( + node.scrollWidth <= node.clientWidth || + Math.abs(event.deltaY) <= Math.abs(event.deltaX) + ) { + return; + } + + node.scrollLeft += event.deltaY; + event.preventDefault(); + }; + + node.addEventListener('wheel', onWheel, { passive: false }); + + return () => { + node.removeEventListener('wheel', onWheel); + }; + }, []); + + const renderSidebarEntry = (entry: HeroSidebarEntry) => { + if (isFolder(entry)) { + return ( + + ); + } + + return ( + + ); + }; + return ( - - + + + + + + + + + + {visual.workspace.name} + + + + + + + + + + + + + + + {visual.favoritesNav && visual.favoritesNav.length > 0 ? ( + + Favorites + {visual.favoritesNav.map((item) => ( + + ))} + + ) : null} + + Workspace + {visual.workspaceNav.map(renderSidebarEntry)} + + + + + + + + + + + + {activeLabel} + + + + + + + + + + New Record + + + + + + + + + + + + + + + {actions.map((action) => ( + {action} + ))} + + + + + + + + + + {columns.map((column) => ( + + + {column.isFirstColumn ? ( + <> + + + + {renderHeaderIcon(column.id)} + {column.label} + + + ) : ( + <> + {renderHeaderIcon(column.id)} + {column.label} + + )} + + + ))} + + {fillerWidth > 0 ? ( + + + + ) : null} + + + + {rows.map((row) => { + const hovered = hoveredRowId === row.id; + + return ( + setHoveredRowId(row.id)} + onMouseLeave={() => + setHoveredRowId((current) => + current === row.id ? null : current, + ) + } + > + {columns.map((column) => { + const cell = row.cells[column.id]; + + return ( + + {cell + ? renderCellValue( + cell, + hovered, + !!column.isFirstColumn, + ) + : null} + + ); + })} + + + ); + })} + + + {columns.length > 0 ? ( + + + Calculate + + + + ) : null} + {columns.slice(1).map((column) => ( + + ))} + + + + + + + + + + ); } + +function renderHeaderIcon(columnId: string): ReactNode { + const Icon = HEADER_ICON_MAP[columnId]; + + if (Icon) { + return ( + + ); + } + + return ( + + ); +} diff --git a/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/homeVisualChip.tsx b/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/homeVisualChip.tsx new file mode 100644 index 0000000000..d55c0a68b5 --- /dev/null +++ b/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/homeVisualChip.tsx @@ -0,0 +1,138 @@ +import { styled } from '@linaria/react'; +import { type ReactNode } from 'react'; + +import { VISUAL_TOKENS } from './homeVisualTokens'; + +export enum ChipVariant { + Highlighted = 'highlighted', + Regular = 'regular', + Transparent = 'transparent', + Rounded = 'rounded', + Static = 'static', +} + +export type ChipProps = { + label: string; + clickable?: boolean; + isBold?: boolean; + leftComponent?: ReactNode | null; + className?: string; + maxWidth?: number; + variant?: ChipVariant; +}; + +const StyledContainer = styled.div< + Pick +>` + --chip-horizontal-padding: ${VISUAL_TOKENS.spacing[1]}; + --chip-vertical-padding: ${VISUAL_TOKENS.spacing[1]}; + + align-items: center; + background-color: ${({ variant }) => + variant === ChipVariant.Static + ? VISUAL_TOKENS.background.transparent.lighter + : variant === ChipVariant.Highlighted + ? VISUAL_TOKENS.background.transparent.light + : 'inherit'}; + border: ${({ variant }) => + variant === ChipVariant.Static + ? `1px solid ${VISUAL_TOKENS.border.color.strong}` + : 'none'}; + border-radius: ${({ variant }) => + variant === ChipVariant.Rounded || variant === ChipVariant.Static + ? VISUAL_TOKENS.border.radius.pill + : VISUAL_TOKENS.border.radius.sm}; + color: ${VISUAL_TOKENS.font.color.primary}; + cursor: ${({ clickable, variant }) => + variant === ChipVariant.Transparent + ? 'inherit' + : clickable + ? 'pointer' + : 'inherit'}; + display: inline-flex; + gap: ${VISUAL_TOKENS.spacing[1]}; + height: 20px; + justify-content: flex-start; + max-width: ${({ maxWidth }) => + maxWidth + ? `calc(${maxWidth}px - 2 * var(--chip-horizontal-padding))` + : '100%'}; + overflow: hidden; + padding: var(--chip-vertical-padding) var(--chip-horizontal-padding); + padding-left: ${({ variant }) => + variant === ChipVariant.Transparent + ? VISUAL_TOKENS.spacing[0] + : variant === ChipVariant.Static + ? VISUAL_TOKENS.spacing[2] + : 'var(--chip-horizontal-padding)'}; + padding-right: ${({ variant }) => + variant === ChipVariant.Static + ? VISUAL_TOKENS.spacing[2] + : 'var(--chip-horizontal-padding)'}; + user-select: none; + + font-weight: ${({ isBold }) => + isBold + ? VISUAL_TOKENS.font.weight.medium + : VISUAL_TOKENS.font.weight.regular}; + + &:hover { + background-color: ${({ variant }) => + variant === ChipVariant.Regular + ? VISUAL_TOKENS.background.transparent.light + : variant === ChipVariant.Highlighted + ? VISUAL_TOKENS.background.transparent.medium + : variant === ChipVariant.Static + ? VISUAL_TOKENS.background.transparent.light + : 'inherit'}; + } + + &:active { + background-color: ${({ variant }) => + variant === ChipVariant.Regular + ? VISUAL_TOKENS.background.transparent.medium + : variant === ChipVariant.Highlighted + ? VISUAL_TOKENS.background.transparent.strong + : variant === ChipVariant.Static + ? VISUAL_TOKENS.background.transparent.light + : 'inherit'}; + } + + & > svg { + flex-shrink: 0; + } +`; + +const StyledLabel = styled.span` + color: inherit; + font-size: inherit; + font-weight: inherit; + max-width: 100%; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +`; + +export const Chip = ({ + label, + clickable = false, + isBold = false, + leftComponent = null, + className, + maxWidth, + variant = ChipVariant.Regular, +}: ChipProps) => { + return ( + + {leftComponent} + {label} + + ); +}; diff --git a/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/homeVisualTokens.ts b/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/homeVisualTokens.ts new file mode 100644 index 0000000000..c553754c8e --- /dev/null +++ b/packages/twenty-website-new/src/sections/Hero/components/HomeVisual/homeVisualTokens.ts @@ -0,0 +1,67 @@ +// Resolved CSS token values that replace twenty-ui's themeCssVariables. +// These are the light-theme defaults for Twenty's design system. +export const VISUAL_TOKENS = { + font: { + family: "'Inter', sans-serif", + color: { + primary: '#333333', + secondary: '#666666', + tertiary: '#999999', + light: '#b3b3b3', + }, + size: { + md: '13px', + }, + weight: { + regular: '400', + medium: '500', + }, + }, + spacing: { + 0: '0px', + 1: '4px', + 2: '8px', + }, + border: { + color: { + strong: '#d6d6d6', + medium: '#ebebeb', + light: '#f1f1f1', + blue: '#c6d4f9', + }, + radius: { + sm: '4px', + pill: '999px', + }, + }, + background: { + noisy: + "url(\"data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.5' numOctaves='6' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.03'/%3E%3C/svg%3E\")", + primary: '#ffffff', + secondary: '#fcfcfc', + transparent: { + primary: 'rgba(255, 255, 255, 0.9)', + medium: 'rgba(0, 0, 0, 0.04)', + light: 'rgba(0, 0, 0, 0.03)', + lighter: 'rgba(0, 0, 0, 0.02)', + strong: 'rgba(0, 0, 0, 0.07)', + blue: 'rgba(62, 99, 221, 0.04)', + }, + }, + accent: { + accent9: '#3e63dd', + primary: '#d9e2fc', + }, + boxShadow: { + light: + '0px 2px 4px rgba(0, 0, 0, 0.04), 0px 0px 4px rgba(0, 0, 0, 0.08)', + }, + icon: { + size: { + sm: '14', + }, + stroke: { + sm: '1.6', + }, + }, +} as const; diff --git a/packages/twenty-website-new/src/sections/Hero/types/HeroHomeData.ts b/packages/twenty-website-new/src/sections/Hero/types/HeroHomeData.ts index 4ab69897af..be90e1290b 100644 --- a/packages/twenty-website-new/src/sections/Hero/types/HeroHomeData.ts +++ b/packages/twenty-website-new/src/sections/Hero/types/HeroHomeData.ts @@ -1,7 +1,108 @@ -import { ImageType } from '@/design-system/components/Image/types/Image'; -import { HeroBaseDataType } from '@/sections/Hero/types/HeroBaseData'; +import type { HeroBaseDataType } from '@/sections/Hero/types/HeroBaseData'; + +// -- Cell value types -- + +export type HeroCellText = { type: 'text'; value: string }; +export type HeroCellNumber = { type: 'number'; value: string }; +export type HeroCellLink = { type: 'link'; value: string }; +export type HeroCellBoolean = { type: 'boolean'; value: boolean }; +export type HeroCellTag = { type: 'tag'; value: string }; + +export type HeroCellPerson = { + type: 'person'; + name: string; + avatarUrl?: string; + kind?: 'api' | 'person' | 'system' | 'workflow'; + shortLabel?: string; + tone?: string; +}; + +export type HeroCellEntity = { + type: 'entity'; + name: string; + domain?: string; +}; + +export type HeroCellRelation = { + type: 'relation'; + items: { name: string; shortLabel?: string; tone?: string }[]; +}; + +export type HeroCellValue = + | HeroCellText + | HeroCellNumber + | HeroCellLink + | HeroCellBoolean + | HeroCellTag + | HeroCellPerson + | HeroCellEntity + | HeroCellRelation; + +// -- Column & row -- + +export type HeroColumnDef = { + id: string; + label: string; + width: number; + align?: 'left' | 'right'; + isFirstColumn?: boolean; +}; + +export type HeroRowDef = { + id: string; + cells: Record; +}; + +// -- Sidebar icon -- + +export type HeroSidebarIcon = + | { kind: 'tabler'; name: string; tone: string; overlay?: 'link' } + | { kind: 'brand'; brand: string; overlay?: 'link' } + | { + kind: 'avatar'; + label: string; + tone: string; + shape?: 'circle' | 'square'; + }; + +// -- Sidebar navigation -- + +export type HeroSidebarItem = { + id: string; + label: string; + icon: HeroSidebarIcon; + meta?: string; + active?: boolean; + showChevron?: boolean; + children?: HeroSidebarItem[]; + columns?: HeroColumnDef[]; + rows?: HeroRowDef[]; + viewLabel?: string; + viewCount?: number; +}; + +export type HeroSidebarFolder = { + id: string; + label: string; + icon: HeroSidebarIcon; + defaultOpen?: boolean; + showChevron?: boolean; + children?: HeroSidebarItem[]; + items: HeroSidebarItem[]; +}; + +export type HeroSidebarEntry = HeroSidebarItem | HeroSidebarFolder; + +// -- Top-level visual -- + +export type HeroVisualType = { + workspace: { icon: string; name: string }; + favoritesNav?: HeroSidebarItem[]; + workspaceNav: HeroSidebarEntry[]; + tableWidth?: number; + actions?: string[]; +}; export type HeroHomeDataType = HeroBaseDataType & { - background: ImageType; - foreground: ImageType; + visual: HeroVisualType; }; diff --git a/packages/twenty-website-new/src/sections/Hero/types/index.ts b/packages/twenty-website-new/src/sections/Hero/types/index.ts index 66c4e59e85..c186d5606b 100644 --- a/packages/twenty-website-new/src/sections/Hero/types/index.ts +++ b/packages/twenty-website-new/src/sections/Hero/types/index.ts @@ -1,4 +1,22 @@ export type { HeroBaseDataType } from './HeroBaseData'; -export type { HeroHomeDataType } from './HeroHomeData'; +export type { + HeroCellBoolean, + HeroCellEntity, + HeroCellLink, + HeroCellNumber, + HeroCellPerson, + HeroCellRelation, + HeroCellTag, + HeroCellText, + HeroCellValue, + HeroColumnDef, + HeroHomeDataType, + HeroRowDef, + HeroSidebarEntry, + HeroSidebarFolder, + HeroSidebarIcon, + HeroSidebarItem, + HeroVisualType, +} from './HeroHomeData'; export type { HeroIllustrationDataType } from './HeroIllustrationData'; export type { HeroWhyTwentyDataType } from './HeroWhyTwentyData'; diff --git a/packages/twenty-website-new/src/sections/TrustedBy/components/ClientCount/ClientCount.tsx b/packages/twenty-website-new/src/sections/TrustedBy/components/ClientCount/ClientCount.tsx index 160e5cee6b..961a249149 100644 --- a/packages/twenty-website-new/src/sections/TrustedBy/components/ClientCount/ClientCount.tsx +++ b/packages/twenty-website-new/src/sections/TrustedBy/components/ClientCount/ClientCount.tsx @@ -1,29 +1,23 @@ -import { UsersIcon } from '@/icons'; -import { theme } from "@/theme"; -import { styled } from "@linaria/react"; -import { ClientCountShape } from "./ClientCountShape"; +import { theme } from '@/theme'; +import { styled } from '@linaria/react'; +import NextImage from 'next/image'; const StyledBlock = styled.div` display: flex; align-items: center; gap: ${theme.spacing(2)}; - padding-top: ${theme.spacing(1)}; - padding-right: ${theme.spacing(3.75)}; - padding-bottom: ${theme.spacing(1)}; - padding-left: ${theme.spacing(1)}; - border-radius: ${theme.radius(2)}; + height: 48px; + padding: ${theme.spacing(1)} ${theme.spacing(3.75)} ${theme.spacing(1)} + ${theme.spacing(1)}; position: relative; overflow: clip; flex-shrink: 0; + width: 157px; `; const ShapeWrapper = styled.div` position: absolute; - top: 50%; - right: 0; - transform: translateY(-50%); - height: 48px; - width: 234px; + inset: 0; z-index: 0; `; @@ -34,12 +28,14 @@ const IconWrapper = styled.div` width: 40px; height: 40px; background-color: ${theme.colors.primary.text[5]}; - border-radius: ${theme.radius(1)}; + border-radius: 2px; position: relative; overflow: clip; + z-index: 1; `; const StyledText = styled.p` + font-family: ${theme.font.family.sans}; font-weight: ${theme.font.weight.medium}; font-size: ${theme.font.size(4)}; line-height: ${theme.lineHeight(5.5)}; @@ -57,10 +53,23 @@ export function ClientCount({ label }: ClientCountProps) { return ( - + - + {label} diff --git a/packages/twenty-website-new/src/sections/TrustedBy/components/Logo/Logo.tsx b/packages/twenty-website-new/src/sections/TrustedBy/components/Logo/Logo.tsx index cfd4b4b70d..72fcc883c5 100644 --- a/packages/twenty-website-new/src/sections/TrustedBy/components/Logo/Logo.tsx +++ b/packages/twenty-website-new/src/sections/TrustedBy/components/Logo/Logo.tsx @@ -1,21 +1,34 @@ -import { styled } from "@linaria/react"; -import type { ReactNode } from "react"; +import type { TrustedByLogosType } from '@/sections/TrustedBy/types'; +import { theme } from '@/theme'; +import { styled } from '@linaria/react'; +import NextImage from 'next/image'; const StyledLogo = styled.div` - display: flex; - align-items: center; - justify-content: center; - width: 140px; - height: inherit; - position: relative; + height: 32px; overflow: clip; flex-shrink: 0; + position: relative; + width: 64px; + + @media (min-width: ${theme.breakpoints.md}px) { + height: 40px; + width: 80px; + } `; -type LogoProps = { - children: ReactNode; -} +type LogoProps = TrustedByLogosType; -export function Logo({ children }: LogoProps) { - return {children}; +export function Logo({ fit = 'contain', src }: LogoProps) { + return ( + + ); } diff --git a/packages/twenty-website-new/src/sections/TrustedBy/components/Logos/Logos.tsx b/packages/twenty-website-new/src/sections/TrustedBy/components/Logos/Logos.tsx index f6784c807d..dfe34f0b64 100644 --- a/packages/twenty-website-new/src/sections/TrustedBy/components/Logos/Logos.tsx +++ b/packages/twenty-website-new/src/sections/TrustedBy/components/Logos/Logos.tsx @@ -1,11 +1,9 @@ -import { CLIENT_ICONS } from '@/icons'; import { - TrustedByClientCountLabelType, - TrustedByLogosType, + type TrustedByClientCountLabelType, + type TrustedByLogosType, } from '@/sections/TrustedBy/types'; import { theme } from '@/theme'; import { styled } from '@linaria/react'; -import React from 'react'; import { ClientCount } from '../ClientCount/ClientCount'; import { Logo } from '../Logo/Logo'; @@ -13,15 +11,27 @@ const StyledLogos = styled.div` align-items: center; display: flex; flex-direction: column; - row-gap: ${theme.spacing(4)}; + gap: ${theme.spacing(5)}; justify-content: center; position: relative; width: 100%; @media (min-width: ${theme.breakpoints.md}px) { flex-direction: row; - column-gap: ${theme.spacing(14)}; - height: 48px; + gap: ${theme.spacing(14)}; + } +`; + +const LogoStrip = styled.div` + align-items: center; + display: grid; + gap: ${theme.spacing(4)} ${theme.spacing(6)}; + grid-template-columns: repeat(2, minmax(0, max-content)); + justify-items: center; + + @media (min-width: ${theme.breakpoints.md}px) { + display: flex; + gap: ${theme.spacing(14)}; } `; @@ -33,22 +43,12 @@ type LogosProps = { export function Logos({ clientCountLabel, logos }: LogosProps) { return ( - {logos.map((logo, index) => { - const IconComponent = CLIENT_ICONS[logo.icon]; - if (!IconComponent) return null; - - return ( - - {index === 1 && } - - - - - ); - })} + + {logos.map((logo, index) => ( + + ))} + + ); } diff --git a/packages/twenty-website-new/src/sections/TrustedBy/components/Root/Root.tsx b/packages/twenty-website-new/src/sections/TrustedBy/components/Root/Root.tsx index 6f9283343c..d0badd67bd 100644 --- a/packages/twenty-website-new/src/sections/TrustedBy/components/Root/Root.tsx +++ b/packages/twenty-website-new/src/sections/TrustedBy/components/Root/Root.tsx @@ -30,7 +30,7 @@ interface RootProps { export function Root({ children }: RootProps) { return ( - + {children} ); diff --git a/packages/twenty-website-new/src/sections/TrustedBy/types/TrustedByData.ts b/packages/twenty-website-new/src/sections/TrustedBy/types/TrustedByData.ts index 224baf100c..d535b4e646 100644 --- a/packages/twenty-website-new/src/sections/TrustedBy/types/TrustedByData.ts +++ b/packages/twenty-website-new/src/sections/TrustedBy/types/TrustedByData.ts @@ -1,9 +1,9 @@ -import { TrustedByClientCountLabelType } from "./TrustedByClientCountLabel"; -import { TrustedBySeparatorType } from "./TrustedBySeparator" -import { TrustedByLogosType } from "./TrustedByLogos"; +import type { TrustedByClientCountLabelType } from './TrustedByClientCountLabel'; +import type { TrustedByLogosType } from './TrustedByLogos'; +import type { TrustedBySeparatorType } from './TrustedBySeparator'; export type TrustedByDataType = { - separator: TrustedBySeparatorType; - clientCountLabel: TrustedByClientCountLabelType; - logos: TrustedByLogosType[]; -} \ No newline at end of file + clientCountLabel: TrustedByClientCountLabelType; + logos: TrustedByLogosType[]; + separator: TrustedBySeparatorType; +}; diff --git a/packages/twenty-website-new/src/sections/TrustedBy/types/TrustedByLogos.ts b/packages/twenty-website-new/src/sections/TrustedBy/types/TrustedByLogos.ts index d8d018bbcb..1654f0c21f 100644 --- a/packages/twenty-website-new/src/sections/TrustedBy/types/TrustedByLogos.ts +++ b/packages/twenty-website-new/src/sections/TrustedBy/types/TrustedByLogos.ts @@ -1,3 +1,4 @@ export type TrustedByLogosType = { - icon: string; -} \ No newline at end of file + fit?: 'contain' | 'cover'; + src: string; +}; diff --git a/yarn.lock b/yarn.lock index 62c5ca04ea..2f6a7a0344 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23445,6 +23445,17 @@ __metadata: languageName: node linkType: hard +"@tabler/icons-react@npm:^3.41.1": + version: 3.41.1 + resolution: "@tabler/icons-react@npm:3.41.1" + dependencies: + "@tabler/icons": "npm:3.41.1" + peerDependencies: + react: ">= 16" + checksum: 10c0/d103816d91df212ef6a4fc05e9f8d5f01deec2197d3accc4a398d325d1cfa8910e06b4daaf82cd08749f242c3908885ac60b21c4129b21094ece9fe0ecd46e4c + languageName: node + linkType: hard + "@tabler/icons@npm:3.31.0": version: 3.31.0 resolution: "@tabler/icons@npm:3.31.0" @@ -23452,6 +23463,13 @@ __metadata: languageName: node linkType: hard +"@tabler/icons@npm:3.41.1": + version: 3.41.1 + resolution: "@tabler/icons@npm:3.41.1" + checksum: 10c0/b1238157fe6e57c0202f1f7153621ad937a6f73ff7c0f0af5a71fcbdace18a3281cddd6632229029c3a3df7c530ae8bcefa75c18e35db4b65e7f884282762cf1 + languageName: node + linkType: hard + "@tanstack/react-store@npm:0.7.7": version: 0.7.7 resolution: "@tanstack/react-store@npm:0.7.7" @@ -60236,6 +60254,7 @@ __metadata: "@base-ui/utils": "npm:^0.2.6" "@linaria/core": "npm:^7.0.0" "@linaria/react": "npm:^7.0.1" + "@tabler/icons-react": "npm:^3.41.1" "@types/node": "npm:^20" "@types/react": "npm:^19" "@types/react-dom": "npm:^19"