From c01e533f39b76333f17634c1297e432662418349 Mon Sep 17 00:00:00 2001 From: Emir Karabeg Date: Sat, 14 Mar 2026 15:03:53 -0700 Subject: [PATCH 1/6] improvement: landing, sidebar, globals, buttons --- .../collaboration/collaboration.tsx | 2 +- apps/sim/app/(home)/components/hero/hero.tsx | 8 +- .../landing-preview-home.tsx | 98 +++++++ .../landing-preview-panel.tsx | 28 +- .../landing-preview-sidebar.tsx | 269 +++++++++++------- .../preview-block-node.tsx | 2 + .../landing-preview-workflow/workflow-data.ts | 29 +- .../landing-preview/landing-preview.tsx | 48 +++- .../app/(home)/components/navbar/navbar.tsx | 2 +- .../app/(home)/components/pricing/pricing.tsx | 2 +- .../(home)/components/templates/templates.tsx | 2 +- apps/sim/app/_styles/globals.css | 17 +- apps/sim/app/api/emails/preview/route.ts | 2 +- .../components/thank-you-screen.tsx | 2 +- .../[executionId]/resume-page-client.tsx | 2 +- apps/sim/app/templates/[id]/template.tsx | 4 +- .../app/workspace/[workspaceId]/home/home.tsx | 4 +- .../document-tags-modal.tsx | 4 +- .../add-connector-modal.tsx | 2 +- .../add-documents-modal.tsx | 2 +- .../base-tags-modal/base-tags-modal.tsx | 2 +- .../edit-connector-modal.tsx | 2 +- .../rename-document-modal.tsx | 2 +- .../create-base-modal/create-base-modal.tsx | 2 +- .../edit-knowledge-base-modal.tsx | 2 +- .../notifications/notifications.tsx | 6 +- .../create-schedule-modal/schedule-modal.tsx | 2 +- .../settings/components/api-keys/api-keys.tsx | 2 +- .../create-api-key-modal.tsx | 2 +- .../settings/components/byok/byok.tsx | 8 +- .../settings/components/copilot/copilot.tsx | 4 +- .../credential-sets/credential-sets.tsx | 6 +- .../credentials/credentials-manager.tsx | 4 +- .../components/custom-tools/custom-tools.tsx | 2 +- .../settings/components/debug/debug.tsx | 2 +- .../settings/components/general/general.tsx | 2 +- .../components/inbox/inbox-enable-toggle.tsx | 2 +- .../components/inbox/inbox-settings-tab.tsx | 2 +- .../settings/components/inbox/inbox.tsx | 2 +- .../integrations/integrations-manager.tsx | 6 +- .../mcp-server-form-modal.tsx | 4 +- .../settings/components/mcp/mcp.tsx | 6 +- .../recently-deleted/recently-deleted.tsx | 4 +- .../skills/components/skill-modal.tsx | 2 +- .../settings/components/skills/skills.tsx | 2 +- .../credit-balance/credit-balance.tsx | 2 +- .../components/subscription/subscription.tsx | 8 +- .../member-invitation-card.tsx | 2 +- .../no-organization-view.tsx | 6 +- .../team-seats-overview.tsx | 2 +- .../components/team-seats/team-seats.tsx | 2 +- .../template-profile/template-profile.tsx | 2 +- .../workflow-mcp-servers.tsx | 16 +- .../components/row-modal/row-modal.tsx | 2 +- .../checkpoint-confirmation.tsx | 2 +- .../components/tool-call/tool-call.tsx | 6 +- .../components/deploy-modal/deploy-modal.tsx | 7 +- .../components/oauth-required-modal.tsx | 2 +- .../custom-tool-modal/custom-tool-modal.tsx | 8 +- .../tool-input/components/tools/parameter.tsx | 2 +- .../editor/components/sub-block/sub-block.tsx | 2 +- .../training-modal/training-modal.tsx | 8 +- .../components/help-modal/help-modal.tsx | 2 +- .../components/context-menu/context-menu.tsx | 2 +- .../create-workspace-modal.tsx | 2 +- .../components/invite-modal/invite-modal.tsx | 4 +- .../workspace-header/workspace-header.tsx | 9 +- apps/sim/app/workspace/layout.tsx | 6 +- apps/sim/components/emails/_styles/base.ts | 2 +- .../components/button-group/button-group.tsx | 2 +- .../emcn/components/button/button.tsx | 5 +- .../v0-5/components/diff-controls-demo.tsx | 2 +- .../components/access-control.tsx | 20 +- apps/sim/ee/sso/components/sso-settings.tsx | 4 +- packages/db/schema.ts | 2 +- 75 files changed, 481 insertions(+), 269 deletions(-) create mode 100644 apps/sim/app/(home)/components/landing-preview/components/landing-preview-home/landing-preview-home.tsx diff --git a/apps/sim/app/(home)/components/collaboration/collaboration.tsx b/apps/sim/app/(home)/components/collaboration/collaboration.tsx index f913dc76ae5..c20f7eba438 100644 --- a/apps/sim/app/(home)/components/collaboration/collaboration.tsx +++ b/apps/sim/app/(home)/components/collaboration/collaboration.tsx @@ -274,7 +274,7 @@ export default function Collaboration() { Build together diff --git a/apps/sim/app/(home)/components/hero/hero.tsx b/apps/sim/app/(home)/components/hero/hero.tsx index a97a6b137a9..6198640ad74 100644 --- a/apps/sim/app/(home)/components/hero/hero.tsx +++ b/apps/sim/app/(home)/components/hero/hero.tsx @@ -71,15 +71,15 @@ export default function Hero() {
- Log in + Get a demo Get started diff --git a/apps/sim/app/(home)/components/landing-preview/components/landing-preview-home/landing-preview-home.tsx b/apps/sim/app/(home)/components/landing-preview/components/landing-preview-home/landing-preview-home.tsx new file mode 100644 index 00000000000..745e220a0ef --- /dev/null +++ b/apps/sim/app/(home)/components/landing-preview/components/landing-preview-home/landing-preview-home.tsx @@ -0,0 +1,98 @@ +'use client' + +import { memo, useCallback, useRef, useState } from 'react' +import { ArrowUp } from 'lucide-react' +import { useLandingSubmit } from '@/app/(home)/components/landing-preview/components/landing-preview-panel/landing-preview-panel' +import { useAnimatedPlaceholder } from '@/app/workspace/[workspaceId]/home/hooks/use-animated-placeholder' + +const C = { + SURFACE: '#292929', + BORDER: '#3d3d3d', + TEXT_PRIMARY: '#e6e6e6', +} as const + +/** + * Landing preview replica of the workspace Home initial view. + * Shows a greeting heading and a minimal chat input (no + or mic). + * On submit, stores the prompt and redirects to /signup. + */ +export const LandingPreviewHome = memo(function LandingPreviewHome() { + const landingSubmit = useLandingSubmit() + const [inputValue, setInputValue] = useState('') + const textareaRef = useRef(null) + const animatedPlaceholder = useAnimatedPlaceholder() + + const isEmpty = inputValue.trim().length === 0 + + const handleSubmit = useCallback(() => { + if (isEmpty) return + landingSubmit(inputValue) + }, [isEmpty, inputValue, landingSubmit]) + + const MAX_HEIGHT = 200 + + const handleKeyDown = useCallback( + (e: React.KeyboardEvent) => { + if (e.key === 'Enter' && !e.shiftKey) { + e.preventDefault() + handleSubmit() + } + }, + [handleSubmit] + ) + + const handleInput = useCallback((e: React.FormEvent) => { + const target = e.target as HTMLTextAreaElement + target.style.height = 'auto' + target.style.height = `${Math.min(target.scrollHeight, MAX_HEIGHT)}px` + }, []) + + return ( +
+

+ What should we get done? +

+ +
+
textareaRef.current?.focus()} + > +