diff --git a/apps/sim/app/(landing)/components/footer/footer.tsx b/apps/sim/app/(landing)/components/footer/footer.tsx index 44be284c0d4..c2908323e8c 100644 --- a/apps/sim/app/(landing)/components/footer/footer.tsx +++ b/apps/sim/app/(landing)/components/footer/footer.tsx @@ -63,6 +63,7 @@ const PRODUCT_LINKS: FooterItem[] = [ { label: 'Chat', href: 'https://docs.sim.ai/mothership', external: true }, { label: 'Workflows', href: '/workflows' }, { label: 'Knowledge Base', href: '/knowledge' }, + { label: 'Sim Search', href: '/search' }, { label: 'Tables', href: '/tables' }, { label: 'Files', href: '/files' }, { label: 'Logs', href: '/logs' }, diff --git a/apps/sim/app/(landing)/components/hero-cta/hero-cta.tsx b/apps/sim/app/(landing)/components/hero-cta/hero-cta.tsx index e8b9d04c3bc..962fee807d3 100644 --- a/apps/sim/app/(landing)/components/hero-cta/hero-cta.tsx +++ b/apps/sim/app/(landing)/components/hero-cta/hero-cta.tsx @@ -1,3 +1,6 @@ +'use client' + +import { usePathname } from 'next/navigation' import { LandingCtaLink, type LandingCtaSection } from '@/app/(landing)/components/landing-cta-link' import { DEMO_HREF, SIGNUP_HREF } from '@/app/(landing)/constants' @@ -18,6 +21,8 @@ export function HeroCta({ secondaryLabel = 'Sign up', trackingSection, }: HeroCtaProps) { + const demoOnly = usePathname() === '/search' + return (
{DEMO_LABEL} - - {secondaryLabel} - + {!demoOnly && ( + + {secondaryLabel} + + )}
) } diff --git a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/components/files-menu-preview/files-menu-preview.tsx b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/components/files-menu-preview/files-menu-preview.tsx index 61a40ccac3f..28b97cea850 100644 --- a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/components/files-menu-preview/files-menu-preview.tsx +++ b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/components/files-menu-preview/files-menu-preview.tsx @@ -8,7 +8,7 @@ import { } from '@/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/components/menu-preview-header/menu-preview-header' interface FilesMenuPreviewProps { - layout?: 'menu' | 'hero' + layout?: 'menu' | 'hero' | 'feature' } const FILES = [ diff --git a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/components/menu-preview-frame/menu-preview-frame.tsx b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/components/menu-preview-frame/menu-preview-frame.tsx index 16d2726f5ff..2aca4d85e1a 100644 --- a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/components/menu-preview-frame/menu-preview-frame.tsx +++ b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/components/menu-preview-frame/menu-preview-frame.tsx @@ -8,7 +8,7 @@ interface MenuPreviewFrameProps { children: ReactNode /** Opt in only when a preview contains real hover or keyboard interaction. */ interactive?: boolean - layout?: 'menu' | 'hero' + layout?: 'menu' | 'hero' | 'feature' } /** Navigation crops and open hero stages share the same product UI and edge treatment. */ @@ -18,7 +18,7 @@ export function MenuPreviewFrame({ interactive = false, layout = 'menu', }: MenuPreviewFrameProps) { - const isHero = layout === 'hero' + const isHero = layout !== 'menu' return (
{children} diff --git a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/nav-menu-preview.tsx b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/nav-menu-preview.tsx index 52d7193703c..1fa93585095 100644 --- a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/nav-menu-preview.tsx +++ b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/components/nav-menu-preview/nav-menu-preview.tsx @@ -16,6 +16,7 @@ import type { NavMenuItemData, NavMenuPreviewKind, } from '@/app/(landing)/components/navbar/components/nav-menu-chip/types' +import { SearchPreview } from '@/app/(landing)/search/components/search-preview' interface NavMenuPreviewProps { item: NavMenuItemData @@ -96,6 +97,8 @@ function PreviewGraphic({ kind, details }: ProductGraphicProps) { return case 'team': return + case 'search': + return case 'resource': return } diff --git a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/constants.ts b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/constants.ts index a5ef78efab1..b59df968375 100644 --- a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/constants.ts +++ b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/constants.ts @@ -52,11 +52,6 @@ export const PLATFORM_MENU: NavMenu = { details: ['Trigger', 'Agent', 'Action'], }, }, - ], - }, - { - label: 'Operations and control', - items: [ { brand: 'Sim', title: 'Knowledge Base', @@ -69,6 +64,23 @@ export const PLATFORM_MENU: NavMenu = { details: ['Notion', 'Google Drive', 'Confluence'], }, }, + ], + }, + { + label: 'Operations and control', + items: [ + { + brand: 'Sim', + title: 'Search', + description: 'Ask questions and find company content. Available with Sim Enterprise.', + href: '/search', + preview: { + kind: 'search', + eyebrow: 'Sim Enterprise', + title: 'Your company’s knowledge. One place to ask.', + details: ['Ask Sim', 'Find files', 'Explore company context'], + }, + }, { brand: 'Sim', title: 'Files', diff --git a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/types.ts b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/types.ts index cf8a1f3561e..c2bdad827a9 100644 --- a/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/types.ts +++ b/apps/sim/app/(landing)/components/navbar/components/nav-menu-chip/types.ts @@ -11,6 +11,7 @@ export type NavMenuPreviewKind = | 'knowledge' | 'logs' | 'resource' + | 'search' | 'tables' | 'team' | 'workflows' diff --git a/apps/sim/app/(landing)/components/navbar/components/navbar-auth-pill/navbar-auth-pill.tsx b/apps/sim/app/(landing)/components/navbar/components/navbar-auth-pill/navbar-auth-pill.tsx index 7897c759384..1209aee50b4 100644 --- a/apps/sim/app/(landing)/components/navbar/components/navbar-auth-pill/navbar-auth-pill.tsx +++ b/apps/sim/app/(landing)/components/navbar/components/navbar-auth-pill/navbar-auth-pill.tsx @@ -1,5 +1,8 @@ +'use client' + import { cn } from '@sim/emcn' import Link from 'next/link' +import { usePathname } from 'next/navigation' import { LOGIN_HREF, SIGNUP_HREF } from '@/app/(landing)/constants' interface NavbarAuthPillProps { @@ -13,6 +16,7 @@ const SEGMENT_CLASSES = /** Two independent account links share one pill and a short inset divider. */ export function NavbarAuthPill({ size = 'compact', className, onNavigate }: NavbarAuthPillProps) { + const demoOnly = usePathname() === '/search' const compact = size === 'compact' return ( @@ -29,22 +33,33 @@ export function NavbarAuthPill({ size = 'compact', className, onNavigate }: Navb href={LOGIN_HREF} prefetch={false} onClick={onNavigate} - className={cn(SEGMENT_CLASSES, 'rounded-l-full', compact ? 'px-3' : 'flex-auto px-2')} + className={cn( + SEGMENT_CLASSES, + demoOnly ? 'rounded-full' : 'rounded-l-full', + compact ? 'px-3' : 'flex-auto px-2' + )} > Log in -
) } diff --git a/apps/sim/app/(landing)/components/solutions-page/components/solutions-product-page/components/product-feature/product-feature.tsx b/apps/sim/app/(landing)/components/solutions-page/components/solutions-product-page/components/product-feature/product-feature.tsx index 6247c8454c1..1ef7f5248a3 100644 --- a/apps/sim/app/(landing)/components/solutions-page/components/solutions-product-page/components/product-feature/product-feature.tsx +++ b/apps/sim/app/(landing)/components/solutions-page/components/solutions-product-page/components/product-feature/product-feature.tsx @@ -16,7 +16,7 @@ export function ProductFeature({ feature }: ProductFeatureProps) { >