From 5a4740ecc80046bd0d46d651c99718ae4f8077a4 Mon Sep 17 00:00:00 2001 From: waleed Date: Tue, 17 Mar 2026 14:37:51 -0700 Subject: [PATCH 1/5] improvement(landing): added enterprise section --- .../components/enterprise/enterprise.tsx | 489 +++++++++++++++++- apps/sim/app/(home)/landing.tsx | 6 +- 2 files changed, 489 insertions(+), 6 deletions(-) diff --git a/apps/sim/app/(home)/components/enterprise/enterprise.tsx b/apps/sim/app/(home)/components/enterprise/enterprise.tsx index 1d07bd58a38..a1d4dd52d22 100644 --- a/apps/sim/app/(home)/components/enterprise/enterprise.tsx +++ b/apps/sim/app/(home)/components/enterprise/enterprise.tsx @@ -4,14 +4,497 @@ * SEO: * - `
`. * - `

` for the section title. - * - Compliance certs (SOC2, HIPAA) as visible `` text. + * - Compliance certs (SOC 2, HIPAA) as visible `` text. * - Enterprise CTA links to contact form via `` with `rel="noopener noreferrer"`. * * GEO: - * - Entity-rich: "Sim is SOC2 and HIPAA compliant" — not "We are compliant." + * - Entity-rich: "Sim is SOC 2 and HIPAA compliant" — not "We are compliant." * - `
    ` checklist of features (SSO, RBAC, audit logs, SLA, on-premise deployment) * as an atomic answer block for "What enterprise features does Sim offer?". */ +'use client' + +import { useEffect, useRef, useState } from 'react' +import { AnimatePresence, motion } from 'framer-motion' +import Link from 'next/link' +import { Badge, ChevronDown } from '@/components/emcn' +import { GithubIcon } from '@/components/icons' + +/** Consistent color per actor — same pattern as Collaboration section cursors. */ +const ACTOR_COLORS: Record = { + 'Sarah K.': '#2ABBF8', + 'Sid G.': '#33C482', + 'Theo L.': '#FA4EDF', + 'Abhay K.': '#FFCC02', + 'Danny S.': '#FF6B35', +} + +/** Left accent bar opacity by recency — newest is brightest. */ +const ACCENT_OPACITIES = [0.75, 0.45, 0.28, 0.15, 0.07] as const + +/** Human-readable label per resource type. */ +const RESOURCE_TYPE_LABEL: Record = { + workflow: 'Workflow', + member: 'Member', + byok_key: 'BYOK Key', + api_key: 'API Key', + permission_group: 'Permission Group', + credential_set: 'Credential Set', + knowledge_base: 'Knowledge Base', + environment: 'Environment', + mcp_server: 'MCP Server', + file: 'File', + webhook: 'Webhook', + chat: 'Chat', + table: 'Table', + folder: 'Folder', + document: 'Document', +} + +interface LogEntry { + id: number + actor: string + /** Matches the `description` field stored by recordAudit() */ + description: string + resourceType: string + /** Unix ms timestamp of when this entry was "received" */ + insertedAt: number +} + +function formatTimeAgo(insertedAt: number): string { + const elapsed = Date.now() - insertedAt + if (elapsed < 8_000) return 'just now' + if (elapsed < 60_000) return `${Math.floor(elapsed / 1000)}s ago` + return `${Math.floor(elapsed / 60_000)}m ago` +} + +/** + * Entry templates using real description strings from the actual recordAudit() + * calls across the codebase (e.g. `Added BYOK key for openai`, + * `Invited alex@acme.com to workspace as member`). + */ +const ENTRY_TEMPLATES: Omit[] = [ + { actor: 'Sarah K.', description: 'Deployed workflow "Email Triage"', resourceType: 'workflow' }, + { + actor: 'Sid G.', + description: 'Invited alex@acme.com to workspace as member', + resourceType: 'member', + }, + { actor: 'Theo L.', description: 'Added BYOK key for openai', resourceType: 'byok_key' }, + { actor: 'Sarah K.', description: 'Created workflow "Invoice Parser"', resourceType: 'workflow' }, + { + actor: 'Abhay K.', + description: 'Created permission group "Engineering"', + resourceType: 'permission_group', + }, + { actor: 'Danny S.', description: 'Created API key "Production Key"', resourceType: 'api_key' }, + { + actor: 'Theo L.', + description: 'Changed permissions for sam@acme.com to editor', + resourceType: 'member', + }, + { actor: 'Sarah K.', description: 'Uploaded file "Q3_Report.pdf"', resourceType: 'file' }, + { + actor: 'Sid G.', + description: 'Created credential set "Prod Keys"', + resourceType: 'credential_set', + }, + { + actor: 'Abhay K.', + description: 'Created knowledge base "Internal Docs"', + resourceType: 'knowledge_base', + }, + { actor: 'Danny S.', description: 'Updated environment variables', resourceType: 'environment' }, + { + actor: 'Sarah K.', + description: 'Added tool "search_web" to MCP server', + resourceType: 'mcp_server', + }, + { actor: 'Sid G.', description: 'Created webhook "Stripe Payment"', resourceType: 'webhook' }, + { actor: 'Theo L.', description: 'Deployed chat "Support Assistant"', resourceType: 'chat' }, + { actor: 'Abhay K.', description: 'Created table "Lead Tracker"', resourceType: 'table' }, + { actor: 'Danny S.', description: 'Revoked API key "Staging Key"', resourceType: 'api_key' }, + { + actor: 'Sarah K.', + description: 'Duplicated workflow "Data Enrichment"', + resourceType: 'workflow', + }, + { + actor: 'Sid G.', + description: 'Removed member theo@acme.com from workspace', + resourceType: 'member', + }, + { + actor: 'Theo L.', + description: 'Updated knowledge base "Product Docs"', + resourceType: 'knowledge_base', + }, + { actor: 'Abhay K.', description: 'Created folder "Finance Workflows"', resourceType: 'folder' }, + { + actor: 'Danny S.', + description: 'Uploaded document "onboarding-guide.pdf"', + resourceType: 'document', + }, + { + actor: 'Sarah K.', + description: 'Updated credential set "Prod Keys"', + resourceType: 'credential_set', + }, + { + actor: 'Sid G.', + description: 'Added member abhay@acme.com to permission group "Engineering"', + resourceType: 'permission_group', + }, + { actor: 'Theo L.', description: 'Locked workflow "Customer Sync"', resourceType: 'workflow' }, +] + +const INITIAL_OFFSETS_MS = [0, 20_000, 75_000, 240_000, 540_000] + +const MARQUEE_KEYFRAMES = ` + @keyframes marquee { + 0% { transform: translateX(0); } + 100% { transform: translateX(-25%); } + } + @media (prefers-reduced-motion: reduce) { + @keyframes marquee { 0%, 100% { transform: none; } } + } +` + +const FEATURE_TAGS = [ + 'Access Control', + 'Self-Hosting', + 'Bring Your Own Key', + 'Credential Sharing', + 'Custom Limits', + 'Admin API', + 'White Labeling', + 'Dedicated Support', + '99.9% Uptime SLA', + 'Workflow Versioning', + 'On-Premise', + 'Organizations', + 'Workspace Export', + 'Audit Logs', +] as const + +function DotGrid() { + return ( +