From 516dd7ed0ff76e8aa03b9ea344702756719fef89 Mon Sep 17 00:00:00 2001 From: andres Date: Tue, 14 Jul 2026 20:38:19 -0400 Subject: [PATCH] feat(landing): extend enterprise product-preview design to solutions and workflows pages (#5672) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(landing): extend enterprise product-preview design to solutions and workflows pages Parametrize enterprise feature graphics with content props and retell each solutions page's feature blocs for its domain (engineering, it, compliance, finance, hr) plus the workflows platform page. Add five new graphics in the same visual vocabulary, animated platform-UI heroes with domain-specific loops on all six pages, hero category tags, container-query proportional tile scaling with wide/2x2 layout options, and a shared pre-footer CTA band. Enterprise page renders identically. Co-authored-by: Cursor * feat(landing): surface Platform and Solutions menus in top nav Renders PLATFORM_MENU and SOLUTIONS_MENU alongside Resources (Platform, Solutions, Resources trigger order), drops the internal-only Mothership item, centers the five-item Platform panel's two-tile last row, and lets the mobile sheet scroll now that all three sections outgrow a phone viewport. Co-authored-by: Cursor * feat(landing): add scheduled tasks page and nav item Adds the /scheduled-tasks landing page (SolutionsPage consumer with a chat-free schedule-trigger editor hero and enterprise feature tiles retold for recurring runs) and a sixth Scheduled Tasks item in the Platform menu, restoring the clean 3x2 grid. Co-authored-by: Cursor * feat(landing): add knowledge, tables, files, and logs platform pages Completes the Platform nav dropdown — its knowledge, tables, files, and logs items previously 404'd. Each page is a SolutionsPage consumer with a product-UI hero loop, enterprise-style feature tiles, CTA band, and SEO metadata. Removes the dead platform-page component family (workflows was its last consumer) and adds the new routes to the sitemap. Co-authored-by: Cursor * refactor(landing): consolidate hero-loop engine and code-window graphics, drop dead variant surface - Extract shared useDesignScale + useMotionSafeCycle hooks and a HeroLoopShell so all seven hero loops share one scale/reduced-motion clock engine - Merge workflows-editor-loop and scheduled-tasks-hero-loop into one parameterized shared EditorLoop (content-injection, same pattern as EnterpriseLoopContent) - Consolidate the four identical code-window feature graphics into one shared CodeWindowGraphic + single CSS module; pages keep thin data wrappers - Remove the unreachable 'split'/'standard'/align variant surface from SolutionsPage/SolutionsCardRow/SolutionsCard and trim unused barrel re-exports - Enterprise hero now consumes the shared PlatformHeroVisual instead of an inline byte-identical copy - Add /scheduled-tasks to the sitemap - a11y: closed mobile-nav sheet is now invisible (out of tab order) with aria-controls wiring; decorative tables-hero checkboxes are no longer keyboard-focusable - memo() the static EnterpriseSidebar; hoist per-render header arrays; remove comments that restated component TSDoc * fix(landing): highlight Scheduled tasks in the scheduled-tasks hero sidebar Thread activeNav through the shared EditorLoop content so the scheduled-tasks hero highlights its own module row, matching the other platform heroes. * chore(landing): drop spacing constants orphaned by the variant removal Remove the now-unconsumed cardRowHeaderStack/cardRowHeaderCtaGap/ cardTextToVisual/rowSubtitle constants, fix a stale cardVariant TSDoc reference, and restore import order in the workflows editor-loop wrapper. * chore(landing): single-source RESET_FADE_MS and drop the unused card frame size RESET_FADE_MS now lives only in the shared loop-engine hook module; the enterprise stage-data copy is removed. SolutionsVisualFrame loses its size prop and cardHeight constant - only the 16:9 hero preset remained in use after the split-variant removal. * fix(landing): make the knowledge-answer question bubble visible on light tiles The frameless vignette sits directly on the tile's --surface-3 fill, so the build tile's --surface-3 bubble treatment vanished. The question chip now uses the graphic family's white card chrome (--white fill, --border-1 hairline), matching its own source card. Also restores biome's import order in the workflows editor-loop wrapper (fixes the failing lint:check CI step). * chore(landing): share one ZipIcon across the files preview and files hero Extract the duplicated zip-archive SVG into components/shared/zip-icon and consume it from both the homepage files preview and the files hero loop. --------- Co-authored-by: andresdjasso Co-authored-by: Cursor Co-authored-by: Waleed Latif --- apps/sim/app/(landing)/CLAUDE.md | 10 +- .../hero-workflow-stage.tsx | 15 + apps/sim/app/(landing)/components/index.ts | 17 +- .../landing-preview-files.tsx | 24 +- .../components/mobile-nav/mobile-nav.tsx | 22 +- .../components/nav-menu-chip/constants.ts | 24 +- .../nav-menu-chip/nav-menu-chip.tsx | 15 +- .../components/platform-hero-visual/index.ts | 1 + .../platform-hero-visual.tsx | 38 ++ .../platform-page/components/index.ts | 4 - .../platform-card-row/components/index.ts | 2 - .../components/platform-card/index.ts | 1 - .../platform-card/platform-card.tsx | 42 -- .../components/platform-pill-cta/index.ts | 1 - .../platform-pill-cta/platform-pill-cta.tsx | 47 -- .../components/platform-card-row/index.ts | 1 - .../platform-card-row/platform-card-row.tsx | 72 ---- .../components/platform-hero/index.ts | 1 - .../platform-hero/platform-hero.tsx | 61 --- .../components/platform-logos-row/index.ts | 1 - .../platform-logos-row/platform-logos-row.tsx | 30 -- .../platform-structured-data/index.ts | 1 - .../platform-structured-data.tsx | 68 --- .../components/platform-visual-frame/index.ts | 1 - .../platform-visual-frame.tsx | 41 -- .../components/platform-page/constants.ts | 60 --- .../components/platform-page/index.ts | 8 - .../platform-page/platform-page.tsx | 59 --- .../components/platform-page/types.ts | 96 ----- .../code-window-graphic.module.css | 62 +++ .../code-window-graphic.tsx | 107 +++++ .../shared/code-window-graphic/index.ts | 1 + .../shared/editor-loop/editor-loop.tsx | 120 ++++++ .../components/shared/editor-loop/index.ts | 1 + .../hero-loop-shell/hero-loop-shell.tsx | 60 +++ .../shared/hero-loop-shell/index.ts | 1 + .../components/shared/zip-icon/index.ts | 1 + .../components/shared/zip-icon/zip-icon.tsx | 28 ++ .../solutions-card-row-header.tsx | 56 +-- .../solutions-card/solutions-card.tsx | 152 ++++--- .../solutions-card-row/solutions-card-row.tsx | 37 +- .../solutions-hero/solutions-hero.tsx | 2 +- .../solutions-visual-frame.tsx | 14 +- .../components/solutions-page/constants.ts | 55 ++- .../solutions-page/solutions-page.tsx | 62 +-- .../components/solutions-page/types.ts | 13 +- .../enterprise-feature-grid.tsx | 3 +- .../enterprise-home-stage.tsx | 41 +- .../enterprise-platform-loop.tsx | 217 ++++------ .../enterprise-sidebar.tsx | 45 +- .../enterprise-platform-loop/stage-data.ts | 78 +++- .../access-control-graphic.tsx | 11 +- .../feature-graphics/audit-trail-graphic.tsx | 25 +- .../feature-graphics/deploy-graphic.tsx | 50 ++- .../feature-graphic-shell.tsx | 14 +- .../it-platform-teams-graphic.tsx | 47 +- .../operations-teams-graphic.tsx | 43 +- .../run-monitoring-graphic.tsx | 131 ++++-- .../feature-graphics/staging-graphic.tsx | 63 ++- .../feature-graphics/standards-graphic.tsx | 38 +- .../technical-teams-graphic.tsx | 51 ++- .../app/(landing)/enterprise/enterprise.tsx | 40 +- .../file-library-graphic.module.css | 49 +++ .../feature-graphics/file-library-graphic.tsx | 147 +++++++ .../feature-graphics/files-sdk-graphic.tsx | 60 +++ .../files/components/files-hero-loop.tsx | 319 ++++++++++++++ apps/sim/app/(landing)/files/files.tsx | 171 ++++++++ apps/sim/app/(landing)/files/page.tsx | 20 + .../app/(landing)/hooks/use-design-scale.ts | 40 ++ .../(landing)/hooks/use-motion-safe-cycle.ts | 66 +++ .../connector-sync-graphic.module.css | 63 +++ .../connector-sync-graphic.tsx | 126 ++++++ .../knowledge-query-graphic.tsx | 58 +++ .../components/knowledge-hero-loop.tsx | 281 ++++++++++++ .../sim/app/(landing)/knowledge/knowledge.tsx | 175 ++++++++ apps/sim/app/(landing)/knowledge/page.tsx | 20 + .../failure-alert-graphic.module.css | 60 +++ .../failure-alert-graphic.tsx | 96 +++++ .../filter-runs-graphic.module.css | 42 ++ .../feature-graphics/filter-runs-graphic.tsx | 106 +++++ .../logs/components/feature-graphics/index.ts | 3 + .../run-trace-graphic.module.css | 54 +++ .../feature-graphics/run-trace-graphic.tsx | 151 +++++++ .../logs/components/logs-hero-loop.tsx | 394 +++++++++++++++++ apps/sim/app/(landing)/logs/logs.tsx | 174 ++++++++ apps/sim/app/(landing)/logs/page.tsx | 20 + .../components/scheduled-tasks-hero-loop.tsx | 117 +++++ .../app/(landing)/scheduled-tasks/page.tsx | 20 + .../scheduled-tasks/scheduled-tasks.tsx | 192 +++++++++ .../solutions/compliance/compliance.tsx | 87 +++- .../components/compliance-hero-loop.tsx | 117 +++++ .../document-draft-graphic.module.css | 74 ++++ .../document-draft-graphic.tsx | 106 +++++ .../components/feature-graphics/index.ts | 2 + .../knowledge-answer-graphic.module.css | 62 +++ .../knowledge-answer-graphic.tsx | 105 +++++ .../components/engineering-hero-loop.tsx | 119 +++++ .../solutions/engineering/engineering.tsx | 96 ++++- .../reconcile-graphic.module.css | 69 +++ .../feature-graphics/reconcile-graphic.tsx | 121 ++++++ .../finance/components/finance-hero-loop.tsx | 116 +++++ .../(landing)/solutions/finance/finance.tsx | 120 +++++- .../solutions/hr/components/hr-hero-loop.tsx | 118 +++++ apps/sim/app/(landing)/solutions/hr/hr.tsx | 108 ++++- .../solutions/it/components/it-hero-loop.tsx | 118 +++++ apps/sim/app/(landing)/solutions/it/it.tsx | 81 +++- .../enrichment-fill-graphic.module.css | 49 +++ .../enrichment-fill-graphic.tsx | 97 +++++ .../components/feature-graphics/index.ts | 3 + .../table-grid-graphic.module.css | 55 +++ .../feature-graphics/table-grid-graphic.tsx | 119 +++++ .../feature-graphics/table-query-graphic.tsx | 62 +++ .../components/tables-hero-loop.module.css | 45 ++ .../tables/components/tables-hero-loop.tsx | 406 ++++++++++++++++++ apps/sim/app/(landing)/tables/page.tsx | 20 + apps/sim/app/(landing)/tables/tables.tsx | 166 +++++++ .../feature-graphics/agent-code-graphic.tsx | 62 +++ .../components/feature-graphics/index.ts | 2 + .../workflow-canvas-graphic.module.css | 88 ++++ .../workflow-canvas-graphic.tsx | 122 ++++++ .../components/workflows-editor-loop.tsx | 129 ++++++ .../sim/app/(landing)/workflows/workflows.tsx | 115 ++++- apps/sim/app/sitemap.ts | 15 + 123 files changed, 7390 insertions(+), 1240 deletions(-) create mode 100644 apps/sim/app/(landing)/components/platform-hero-visual/index.ts create mode 100644 apps/sim/app/(landing)/components/platform-hero-visual/platform-hero-visual.tsx delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-card-row/components/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-card-row/components/platform-card/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-card-row/components/platform-card/platform-card.tsx delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-card-row/components/platform-pill-cta/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-card-row/components/platform-pill-cta/platform-pill-cta.tsx delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-card-row/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-card-row/platform-card-row.tsx delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-hero/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-hero/platform-hero.tsx delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-logos-row/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-logos-row/platform-logos-row.tsx delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-structured-data/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-structured-data/platform-structured-data.tsx delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-visual-frame/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/components/platform-visual-frame/platform-visual-frame.tsx delete mode 100644 apps/sim/app/(landing)/components/platform-page/constants.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/index.ts delete mode 100644 apps/sim/app/(landing)/components/platform-page/platform-page.tsx delete mode 100644 apps/sim/app/(landing)/components/platform-page/types.ts create mode 100644 apps/sim/app/(landing)/components/shared/code-window-graphic/code-window-graphic.module.css create mode 100644 apps/sim/app/(landing)/components/shared/code-window-graphic/code-window-graphic.tsx create mode 100644 apps/sim/app/(landing)/components/shared/code-window-graphic/index.ts create mode 100644 apps/sim/app/(landing)/components/shared/editor-loop/editor-loop.tsx create mode 100644 apps/sim/app/(landing)/components/shared/editor-loop/index.ts create mode 100644 apps/sim/app/(landing)/components/shared/hero-loop-shell/hero-loop-shell.tsx create mode 100644 apps/sim/app/(landing)/components/shared/hero-loop-shell/index.ts create mode 100644 apps/sim/app/(landing)/components/shared/zip-icon/index.ts create mode 100644 apps/sim/app/(landing)/components/shared/zip-icon/zip-icon.tsx create mode 100644 apps/sim/app/(landing)/files/components/feature-graphics/file-library-graphic.module.css create mode 100644 apps/sim/app/(landing)/files/components/feature-graphics/file-library-graphic.tsx create mode 100644 apps/sim/app/(landing)/files/components/feature-graphics/files-sdk-graphic.tsx create mode 100644 apps/sim/app/(landing)/files/components/files-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/files/files.tsx create mode 100644 apps/sim/app/(landing)/files/page.tsx create mode 100644 apps/sim/app/(landing)/hooks/use-design-scale.ts create mode 100644 apps/sim/app/(landing)/hooks/use-motion-safe-cycle.ts create mode 100644 apps/sim/app/(landing)/knowledge/components/feature-graphics/connector-sync-graphic.module.css create mode 100644 apps/sim/app/(landing)/knowledge/components/feature-graphics/connector-sync-graphic.tsx create mode 100644 apps/sim/app/(landing)/knowledge/components/feature-graphics/knowledge-query-graphic.tsx create mode 100644 apps/sim/app/(landing)/knowledge/components/knowledge-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/knowledge/knowledge.tsx create mode 100644 apps/sim/app/(landing)/knowledge/page.tsx create mode 100644 apps/sim/app/(landing)/logs/components/feature-graphics/failure-alert-graphic.module.css create mode 100644 apps/sim/app/(landing)/logs/components/feature-graphics/failure-alert-graphic.tsx create mode 100644 apps/sim/app/(landing)/logs/components/feature-graphics/filter-runs-graphic.module.css create mode 100644 apps/sim/app/(landing)/logs/components/feature-graphics/filter-runs-graphic.tsx create mode 100644 apps/sim/app/(landing)/logs/components/feature-graphics/index.ts create mode 100644 apps/sim/app/(landing)/logs/components/feature-graphics/run-trace-graphic.module.css create mode 100644 apps/sim/app/(landing)/logs/components/feature-graphics/run-trace-graphic.tsx create mode 100644 apps/sim/app/(landing)/logs/components/logs-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/logs/logs.tsx create mode 100644 apps/sim/app/(landing)/logs/page.tsx create mode 100644 apps/sim/app/(landing)/scheduled-tasks/components/scheduled-tasks-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/scheduled-tasks/page.tsx create mode 100644 apps/sim/app/(landing)/scheduled-tasks/scheduled-tasks.tsx create mode 100644 apps/sim/app/(landing)/solutions/compliance/components/compliance-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/solutions/components/feature-graphics/document-draft-graphic.module.css create mode 100644 apps/sim/app/(landing)/solutions/components/feature-graphics/document-draft-graphic.tsx create mode 100644 apps/sim/app/(landing)/solutions/components/feature-graphics/index.ts create mode 100644 apps/sim/app/(landing)/solutions/components/feature-graphics/knowledge-answer-graphic.module.css create mode 100644 apps/sim/app/(landing)/solutions/components/feature-graphics/knowledge-answer-graphic.tsx create mode 100644 apps/sim/app/(landing)/solutions/engineering/components/engineering-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/solutions/finance/components/feature-graphics/reconcile-graphic.module.css create mode 100644 apps/sim/app/(landing)/solutions/finance/components/feature-graphics/reconcile-graphic.tsx create mode 100644 apps/sim/app/(landing)/solutions/finance/components/finance-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/solutions/hr/components/hr-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/solutions/it/components/it-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/tables/components/feature-graphics/enrichment-fill-graphic.module.css create mode 100644 apps/sim/app/(landing)/tables/components/feature-graphics/enrichment-fill-graphic.tsx create mode 100644 apps/sim/app/(landing)/tables/components/feature-graphics/index.ts create mode 100644 apps/sim/app/(landing)/tables/components/feature-graphics/table-grid-graphic.module.css create mode 100644 apps/sim/app/(landing)/tables/components/feature-graphics/table-grid-graphic.tsx create mode 100644 apps/sim/app/(landing)/tables/components/feature-graphics/table-query-graphic.tsx create mode 100644 apps/sim/app/(landing)/tables/components/tables-hero-loop.module.css create mode 100644 apps/sim/app/(landing)/tables/components/tables-hero-loop.tsx create mode 100644 apps/sim/app/(landing)/tables/page.tsx create mode 100644 apps/sim/app/(landing)/tables/tables.tsx create mode 100644 apps/sim/app/(landing)/workflows/components/feature-graphics/agent-code-graphic.tsx create mode 100644 apps/sim/app/(landing)/workflows/components/feature-graphics/index.ts create mode 100644 apps/sim/app/(landing)/workflows/components/feature-graphics/workflow-canvas-graphic.module.css create mode 100644 apps/sim/app/(landing)/workflows/components/feature-graphics/workflow-canvas-graphic.tsx create mode 100644 apps/sim/app/(landing)/workflows/components/workflows-editor-loop.tsx diff --git a/apps/sim/app/(landing)/CLAUDE.md b/apps/sim/app/(landing)/CLAUDE.md index 6943cd7fdf..5d96ffdf9e 100644 --- a/apps/sim/app/(landing)/CLAUDE.md +++ b/apps/sim/app/(landing)/CLAUDE.md @@ -85,13 +85,13 @@ Follow `.claude/rules/constitution.md` exactly: Sim is "the open-source AI works │ ├── landing-shell/ # light wrapper + skip link + Navbar(stars) + Footer; wraps every page │ ├── hero-cta/ # the one email-capture + Sign-up CTA (hero + every platform hero) │ └── logos/ # the one customer-logo set; layout='grid' (hero) | 'row' (platform) - └── platform-page/ # the reusable platform-page layout (Workflows, Tables, Files, …) - ├── platform-page.tsx, index.ts, types.ts, constants.ts # PlatformPage + the content contract + spacing - └── components/ # platform-hero, platform-logos-row, platform-card-row (→ card, pill-cta), - # platform-visual-frame, platform-structured-data + └── solutions-page/ # the reusable solutions/platform layout (Workflows, Knowledge, Tables, Files, Logs, solutions/*) + ├── solutions-page.tsx, index.ts, types.ts, constants.ts # SolutionsPage + the content contract + spacing + └── components/ # solutions-hero, solutions-logos-row, solutions-card-row (→ card, pill-cta), + # solutions-visual-frame, solutions-structured-data ``` -Each section component's TSDoc carries its layout spec - read it before implementing. Section components own their landmark (Navbar → `
`, Footer → `