From 3158b62da882dea643519b530761091cf5598547 Mon Sep 17 00:00:00 2001 From: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com> Date: Wed, 3 Dec 2025 16:31:27 -0800 Subject: [PATCH] feat: light, emcn, modals (#2104) * feat: aligned current unassigned hex to old globals * feat: emcn modal, help-modal; improvement(ui): emcn textarea, emcn combobox, messages-input * improvement(modal): ui, transition * improvement: terminal expand, variables styling; refactor(float): hooks * improvement(invite-modal): emcn aligned * feat(terminal): height memory * improvement(invite-modal): skeleton ui * improvement(invite-modal): badges UI * feat: deploy-modal, emcn * refactor: deleted duplicate dark styles * feat: emcn, settings, light * improvement: emcn, settings * improvement: settings-modal, emcn * improvement: SSO, light-mode * improvement: EMCN, light * fix issues, run lint * fix: reverted mock data --- .cursorrules | 2 +- apps/sim/.cursorrules | 40 +- .../app/_shell/providers/theme-provider.tsx | 34 +- apps/sim/app/_styles/globals.css | 191 +-- apps/sim/app/api/users/me/settings/route.ts | 9 - .../templates/components/template-card.tsx | 2 +- .../create-chunk-modal/create-chunk-modal.tsx | 3 +- .../components/create-modal/create-modal.tsx | 3 +- .../components/icons/document-icons.tsx | 2 +- .../components/dashboard/workflow-details.tsx | 6 +- .../app/workspace/[workspaceId]/logs/logs.tsx | 4 +- .../templates/components/template-card.tsx | 16 +- .../w/[workflowId]/components/chat/chat.tsx | 18 +- .../output-select/output-select.tsx | 3 +- .../components/chat/hooks/index.ts | 6 +- .../diff-controls/diff-controls.tsx | 8 +- .../components/note-block/note-block.tsx | 11 +- .../notifications/notifications.tsx | 12 +- .../components/markdown-renderer.tsx | 44 +- .../components/thinking-block.tsx | 2 +- .../copilot-message/copilot-message.tsx | 10 +- .../components/copilot/components/index.ts | 2 +- .../plan-mode-section/plan-mode-section.tsx | 16 +- .../components/todo-list/todo-list.tsx | 25 +- .../tool-call.tsx} | 41 +- .../components/mention-menu/mention-menu.tsx | 16 +- .../copilot/components/welcome/welcome.tsx | 6 +- .../panel/components/copilot/copilot.tsx | 8 +- .../deploy-modal/components/api-endpoint.tsx | 25 - .../deploy-modal/components/api/api.tsx | 664 +++++++++ .../deploy-modal/components/auth-selector.tsx | 293 ---- .../deploy-modal/components/chat-deploy.tsx | 486 ------- .../deploy-modal/components/chat/chat.tsx | 871 ++++++++++++ .../components/chat/hooks/index.ts | 2 + .../chat/hooks/use-chat-deployment.ts | 131 ++ .../chat}/hooks/use-identifier-validation.ts | 30 +- .../deploy-modal/components/deploy-status.tsx | 40 - .../components/deployed-workflow-card.tsx | 121 -- .../components/deployed-workflow-modal.tsx | 170 --- .../components/deployment-info.tsx | 203 --- .../components/example-command.tsx | 231 --- .../components/general/components/index.ts | 1 + .../general/components/versions.tsx | 333 +++++ .../components/general/general.tsx | 312 ++++ .../components/identifier-input.tsx | 78 - .../deploy-modal/components/success-view.tsx | 81 -- .../components/template-deploy.tsx | 489 ------- .../components/template/template.tsx | 451 ++++++ .../components/deploy-modal/deploy-modal.tsx | 926 ++++++------ .../components/deploy/components/index.ts | 1 + .../panel/components/deploy/deploy.tsx | 2 +- .../deploy/hooks/hooks/use-chat-deployment.ts | 156 -- .../deploy/hooks/hooks/use-chat-form.ts | 116 -- .../components/field-item/field-item.tsx | 6 +- .../connection-blocks/connection-blocks.tsx | 8 +- .../sub-block/components/code/code.tsx | 14 +- .../condition-input/condition-input.tsx | 2 +- .../input-mapping/input-mapping.tsx | 4 +- .../messages-input/messages-input.tsx | 11 +- .../schedule-save/schedule-save.tsx | 6 +- .../components/starter/input-format.tsx | 4 +- .../sub-block/components/table/table.tsx | 45 +- .../components/code-editor/code-editor.tsx | 6 +- .../custom-tool-modal/custom-tool-modal.tsx | 363 ++--- .../components/tool-input/tool-input.tsx | 141 +- .../components/trigger-save/trigger-save.tsx | 2 +- .../variables-input/variables-input.tsx | 2 +- .../editor/components/sub-block/sub-block.tsx | 2 +- .../subflow-editor/subflow-editor.tsx | 12 +- .../panel/components/editor/editor.tsx | 12 +- .../toolbar/components/drag-preview.ts | 2 +- .../panel/components/toolbar/toolbar.tsx | 40 +- .../w/[workflowId]/components/panel/panel.tsx | 25 +- .../components/subflows/subflow-node.tsx | 6 +- .../terminal/hooks/use-terminal-resize.ts | 9 +- .../components/terminal/terminal.tsx | 105 +- .../components/variables/variables.tsx | 27 +- .../webhook-settings/webhook-settings.tsx | 6 +- .../components/action-bar/action-bar.tsx | 10 +- .../workflow-block/workflow-block.tsx | 22 +- .../workflow-edge/workflow-edge.tsx | 2 +- .../w/[workflowId]/hooks/index.ts | 3 +- ...{use-block-core.ts => use-block-visual.ts} | 68 +- .../w/[workflowId]/hooks/use-float/index.ts | 3 + .../use-float/use-float-boundary-sync.ts} | 10 +- .../use-float/use-float-drag.ts} | 6 +- .../use-float/use-float-resize.ts} | 37 +- .../w/[workflowId]/utils/block-ring-utils.ts | 2 +- .../[workspaceId]/w/[workflowId]/workflow.tsx | 2 +- .../footer-navigation/footer-navigation.tsx | 18 +- .../components-new/help-modal/help-modal.tsx | 367 ++--- .../search-modal/search-modal.tsx | 26 +- .../components/account/account.tsx | 320 ----- .../components/api-keys/api-keys.tsx | 617 ++++---- .../components/copilot/copilot.tsx | 346 ++--- .../creator-profile/creator-profile.tsx | 453 ------ .../components/credentials/credentials.tsx | 310 ---- .../components/custom-tools/custom-tools.tsx | 237 ++-- .../components/environment/environment.tsx | 1047 ++++++++------ .../settings-modal/components/files/files.tsx | 286 ++-- .../components/general/general.tsx | 783 ++++++---- .../settings-modal/components/index.ts | 5 +- .../components/integrations/integrations.tsx | 413 ++++++ .../mcp/components/add-server-form.tsx | 303 ---- .../mcp/components/form-field/form-field.tsx | 17 + .../formatted-input/formatted-input.tsx | 66 + .../mcp/components/header-row/header-row.tsx | 81 ++ .../components/mcp/components/index.ts | 12 + .../mcp-server-skeleton.tsx | 20 + .../server-list-item/server-list-item.tsx | 54 + .../components/mcp/components/types.ts | 35 + .../settings-modal/components/mcp/mcp.tsx | 758 +++++----- .../settings-modal/components/mcp/types.ts | 16 - .../components/privacy/privacy.tsx | 86 -- .../settings-navigation.tsx | 379 ----- .../components/shared/usage-header.tsx | 16 +- .../settings-modal/components/sso/sso.tsx | 1263 ++++++++--------- .../cancel-subscription.tsx | 10 +- .../cost-breakdown/cost-breakdown.tsx | 20 +- .../components/plan-card/plan-card.tsx | 18 +- .../components/usage-limit/usage-limit.tsx | 13 +- .../components/subscription/subscription.tsx | 601 ++++---- .../member-invitation-card.tsx | 4 +- .../no-organization-view.tsx | 24 +- .../remove-member-dialog.tsx | 8 +- .../components/team-members/team-members.tsx | 18 +- .../team-seats-overview.tsx | 22 +- .../components/team-seats/team-seats.tsx | 12 +- .../components/team-usage/team-usage.tsx | 8 +- .../team-management/team-management.tsx | 330 +++-- .../template-profile/template-profile.tsx | 499 +++++++ .../hooks/use-profile-picture-upload.ts | 4 + .../settings-modal/settings-modal.tsx | 473 ++++-- .../components/delete-modal/delete-modal.tsx | 6 +- .../components/folder-item/folder-item.tsx | 10 +- .../workflow-item/workflow-item.tsx | 14 +- .../invite-modal/components/email-tag.tsx | 44 + .../invite-modal/components/index.ts | 5 + .../components/permission-selector.tsx | 56 + .../components/permissions-table-skeleton.tsx | 23 + .../components/permissions-table.tsx | 297 ++++ .../invite-modal/components/types.ts | 12 + .../components/invite-modal/invite-modal.tsx | 754 +++------- .../workspace-header/workspace-header.tsx | 4 +- .../w/components/sidebar/sidebar-new.tsx | 14 +- .../workflow-preview/workflow-preview.tsx | 31 +- apps/sim/blocks/blocks/mcp.ts | 4 +- .../emcn/components/button/button.tsx | 4 +- .../components/emcn/components/code/code.css | 105 +- .../components/emcn/components/code/code.tsx | 34 +- .../emcn/components/combobox/combobox.tsx | 94 +- apps/sim/components/emcn/components/index.ts | 16 + .../emcn/components/label/label.tsx | 2 +- .../emcn/components/modal/modal.tsx | 384 +++-- .../emcn/components/popover/popover.tsx | 7 + .../emcn/components/s-modal/s-modal.tsx | 263 ++++ .../emcn/components/switch/switch.tsx | 37 + .../emcn/components/textarea/textarea.tsx | 2 +- .../emcn/components/tooltip/tooltip.tsx | 30 +- apps/sim/components/emcn/icons/card.tsx | 25 + .../sim/components/emcn/icons/connections.tsx | 25 + .../sim/components/emcn/icons/folder-code.tsx | 39 + apps/sim/components/emcn/icons/hex-simple.tsx | 27 + apps/sim/components/emcn/icons/index.ts | 5 + apps/sim/components/emcn/icons/key.tsx | 23 + apps/sim/components/icons.tsx | 172 +-- apps/sim/components/ui/dialog.tsx | 31 - apps/sim/components/ui/tag-input.tsx | 57 +- apps/sim/hooks/queries/general-settings.ts | 35 +- apps/sim/hooks/use-mcp-tools.ts | 4 +- apps/sim/lib/core/utils/theme.ts | 43 +- apps/sim/stores/execution/store.ts | 44 +- apps/sim/stores/execution/types.ts | 7 - apps/sim/stores/settings/general/store.ts | 3 - apps/sim/stores/settings/general/types.ts | 6 - apps/sim/stores/terminal/store.ts | 86 +- apps/sim/stores/variables/store.ts | 6 +- apps/sim/tailwind.config.ts | 6 +- packages/db/schema.ts | 3 - 179 files changed, 10848 insertions(+), 10227 deletions(-) rename apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/{inline-tool-call/inline-tool-call.tsx => tool-call/tool-call.tsx} (96%) delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/api-endpoint.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/api/api.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/auth-selector.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/chat-deploy.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/chat/chat.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/chat/hooks/index.ts create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/chat/hooks/use-chat-deployment.ts rename apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/{control-bar/components/deploy-modal/components/chat-deploy => panel/components/deploy/components/deploy-modal/components/chat}/hooks/use-identifier-validation.ts (75%) delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/deploy-status.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/deployed-workflow-card.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/deployed-workflow-modal.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/deployment-info.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/example-command.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/index.ts create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/components/versions.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/general/general.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/identifier-input.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/success-view.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/template-deploy.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/deploy-modal/components/template/template.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/components/index.ts delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/hooks/hooks/use-chat-deployment.ts delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/deploy/hooks/hooks/use-chat-form.ts rename apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/{use-block-core.ts => use-block-visual.ts} (54%) create mode 100644 apps/sim/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-float/index.ts rename apps/sim/app/workspace/[workspaceId]/w/[workflowId]/{components/chat/hooks/use-chat-boundary-sync.ts => hooks/use-float/use-float-boundary-sync.ts} (92%) rename apps/sim/app/workspace/[workspaceId]/w/[workflowId]/{components/chat/hooks/use-chat-drag.ts => hooks/use-float/use-float-drag.ts} (92%) rename apps/sim/app/workspace/[workspaceId]/w/[workflowId]/{components/chat/hooks/use-chat-resize.ts => hooks/use-float/use-float-resize.ts} (90%) delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/account/account.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/creator-profile/creator-profile.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/credentials/credentials.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/integrations/integrations.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/mcp/components/add-server-form.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/mcp/components/form-field/form-field.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/mcp/components/formatted-input/formatted-input.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/mcp/components/header-row/header-row.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/mcp/components/index.ts create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/mcp/components/mcp-server-skeleton/mcp-server-skeleton.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/mcp/components/server-list-item/server-list-item.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/mcp/components/types.ts delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/mcp/types.ts delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/privacy/privacy.tsx delete mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/settings-navigation/settings-navigation.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/template-profile/template-profile.tsx rename apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/{components/account => }/hooks/use-profile-picture-upload.ts (97%) create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/workspace-header/components/invite-modal/components/email-tag.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/workspace-header/components/invite-modal/components/index.ts create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/workspace-header/components/invite-modal/components/permission-selector.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/workspace-header/components/invite-modal/components/permissions-table-skeleton.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/workspace-header/components/invite-modal/components/permissions-table.tsx create mode 100644 apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/workspace-header/components/invite-modal/components/types.ts create mode 100644 apps/sim/components/emcn/components/s-modal/s-modal.tsx create mode 100644 apps/sim/components/emcn/components/switch/switch.tsx create mode 100644 apps/sim/components/emcn/icons/card.tsx create mode 100644 apps/sim/components/emcn/icons/connections.tsx create mode 100644 apps/sim/components/emcn/icons/folder-code.tsx create mode 100644 apps/sim/components/emcn/icons/hex-simple.tsx create mode 100644 apps/sim/components/emcn/icons/key.tsx diff --git a/.cursorrules b/.cursorrules index 583c84e65..a8f1e657b 100644 --- a/.cursorrules +++ b/.cursorrules @@ -8,7 +8,7 @@ ENSURE that you use the logger.info and logger.warn and logger.error instead of ## Comments -You must use TSDOC for comments. Do not use ==== for comments to separate sections. +You must use TSDOC for comments. Do not use ==== for comments to separate sections. Do not leave any comments that are not TSDOC. ## Globals styles diff --git a/apps/sim/.cursorrules b/apps/sim/.cursorrules index 73ae78123..9b86fbb07 100644 --- a/apps/sim/.cursorrules +++ b/apps/sim/.cursorrules @@ -1,6 +1,6 @@ # Sim App Architecture Guidelines -You are building features in the Sim app following the architecture established by the sidebar-new component. This file defines the patterns, structures, and conventions you must follow. +You are building features in the Sim app following the architecture. This file defines the patterns, structures, and conventions you must follow. --- @@ -428,20 +428,22 @@ setSidebarWidth: (width) => { ### Tailwind Classes 1. **No Inline Styles**: Use Tailwind utility classes exclusively -2. **Dark Mode**: Always include dark mode variants (`dark:bg-[var(--surface-1)]`) -3. **Exact Values**: Use exact values from design system (`text-[14px]`, `h-[25px]`) -4. **clsx for Conditionals**: Use clsx() for conditional classes -5. **Consistent Spacing**: Use spacing tokens (`gap-[8px]`, `px-[14px]`) -6. **Transitions**: Add transitions for interactive states (`transition-colors`) -7. **Prefer px units**: Use arbitrary px values over scale utilities (e.g., `px-[4px]` instead of `px-1`) +2. **Dark Mode**: Include dark mode variants only when the value differs from light mode +3. **No Duplicate Dark Classes**: Never add a `dark:` class when the value is identical to the light mode class (e.g., `text-[var(--text-primary)] dark:text-[var(--text-primary)]` is redundant - just use `text-[var(--text-primary)]`) +4. **Exact Values**: Use exact values from design system (`text-[14px]`, `h-[25px]`) +5. **cn for Conditionals**: Use `cn()` from `@/lib/utils` for conditional classes (wraps clsx + tailwind-merge for conflict resolution) +6. **Consistent Spacing**: Use spacing tokens (`gap-[8px]`, `px-[14px]`) +7. **Transitions**: Add transitions for interactive states (`transition-colors`) +8. **Prefer px units**: Use arbitrary px values over scale utilities (e.g., `px-[4px]` instead of `px-1`) ```typescript +import { cn } from '@/lib/utils' +
``` @@ -620,9 +622,10 @@ Before considering a component/hook complete, verify: ### Styling - [ ] No styles attributes (use className with Tailwind) -- [ ] Dark mode variants included +- [ ] Dark mode variants only when values differ from light mode +- [ ] No duplicate dark: classes with identical values - [ ] Consistent spacing using design tokens -- [ ] clsx for conditional classes +- [ ] cn() for conditional classes ### Accessibility - [ ] Semantic HTML elements @@ -652,6 +655,11 @@ Before considering a component/hook complete, verify: // ❌ Inline styles
+// ❌ Duplicate dark mode classes (same value as light mode) +
+
+
+ // ❌ console.log console.log('Debug info') @@ -690,6 +698,14 @@ export function Component() { // ✅ Tailwind classes
+// ✅ No duplicate dark classes - CSS variables already handle theming +
+
+
+ +// ✅ Only add dark: when values differ between modes +
+ // ✅ Logger logger.info('Debug info', { context }) diff --git a/apps/sim/app/_shell/providers/theme-provider.tsx b/apps/sim/app/_shell/providers/theme-provider.tsx index c1f847bb0..bd18e559e 100644 --- a/apps/sim/app/_shell/providers/theme-provider.tsx +++ b/apps/sim/app/_shell/providers/theme-provider.tsx @@ -7,25 +7,23 @@ import { ThemeProvider as NextThemesProvider } from 'next-themes' export function ThemeProvider({ children, ...props }: ThemeProviderProps) { const pathname = usePathname() - // Force dark mode for workspace pages and templates - // Force light mode for certain public pages + // Force light mode for public/marketing pages + // Workspace and templates respect user's theme preference from settings const forcedTheme = - pathname.startsWith('/workspace') || pathname.startsWith('/templates') - ? 'dark' - : pathname === '/' || - pathname.startsWith('/login') || - pathname.startsWith('/signup') || - pathname.startsWith('/sso') || - pathname.startsWith('/terms') || - pathname.startsWith('/privacy') || - pathname.startsWith('/invite') || - pathname.startsWith('/verify') || - pathname.startsWith('/careers') || - pathname.startsWith('/changelog') || - pathname.startsWith('/chat') || - pathname.startsWith('/studio') - ? 'light' - : undefined + pathname === '/' || + pathname.startsWith('/login') || + pathname.startsWith('/signup') || + pathname.startsWith('/sso') || + pathname.startsWith('/terms') || + pathname.startsWith('/privacy') || + pathname.startsWith('/invite') || + pathname.startsWith('/verify') || + pathname.startsWith('/careers') || + pathname.startsWith('/changelog') || + pathname.startsWith('/chat') || + pathname.startsWith('/studio') + ? 'light' + : undefined return (
-
+
{authorImageUrl ? (
{author} diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/create-chunk-modal/create-chunk-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/create-chunk-modal/create-chunk-modal.tsx index f971bb19c..3a4449f01 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/create-chunk-modal/create-chunk-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/[id]/[documentId]/components/create-chunk-modal/create-chunk-modal.tsx @@ -2,7 +2,8 @@ import { useRef, useState } from 'react' import { AlertCircle, Loader2, X } from 'lucide-react' -import { Button, Modal, ModalContent, ModalTitle, Textarea } from '@/components/emcn' +import { Button, Textarea } from '@/components/emcn' +import { Modal, ModalContent, ModalTitle } from '@/components/emcn/components/modal/modal' import { Label } from '@/components/ui/label' import { createLogger } from '@/lib/logs/console/logger' import type { ChunkData, DocumentData } from '@/stores/knowledge/store' diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/components/create-modal/create-modal.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/components/create-modal/create-modal.tsx index fc033b3ef..fc77a48f7 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/components/create-modal/create-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/components/create-modal/create-modal.tsx @@ -6,7 +6,8 @@ import { AlertCircle, Check, Loader2, X } from 'lucide-react' import { useParams } from 'next/navigation' import { useForm } from 'react-hook-form' import { z } from 'zod' -import { Button, Input, Label, Modal, ModalContent, ModalTitle, Textarea } from '@/components/emcn' +import { Button, Input, Label, Textarea } from '@/components/emcn' +import { Modal, ModalContent, ModalTitle } from '@/components/emcn/components/modal/modal' import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert' import { Progress } from '@/components/ui/progress' import { createLogger } from '@/lib/logs/console/logger' diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/components/icons/document-icons.tsx b/apps/sim/app/workspace/[workspaceId]/knowledge/components/icons/document-icons.tsx index dbbfe9840..161dff219 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/components/icons/document-icons.tsx +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/components/icons/document-icons.tsx @@ -125,7 +125,7 @@ export const TxtIcon: React.FC = ({ className = 'w-6 h-6' }) => ( {hasDuration && ( @@ -467,12 +467,12 @@ export function WorkflowDetails({
{statusLabel} diff --git a/apps/sim/app/workspace/[workspaceId]/logs/logs.tsx b/apps/sim/app/workspace/[workspaceId]/logs/logs.tsx index b8ef9d1a8..c35afcdc8 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/logs.tsx +++ b/apps/sim/app/workspace/[workspaceId]/logs/logs.tsx @@ -483,12 +483,12 @@ export default function Logs() {
{statusLabel} diff --git a/apps/sim/app/workspace/[workspaceId]/templates/components/template-card.tsx b/apps/sim/app/workspace/[workspaceId]/templates/components/template-card.tsx index 1e15ddcfa..48f3fd3c0 100644 --- a/apps/sim/app/workspace/[workspaceId]/templates/components/template-card.tsx +++ b/apps/sim/app/workspace/[workspaceId]/templates/components/template-card.tsx @@ -27,7 +27,12 @@ interface TemplateCardProps { export function TemplateCardSkeleton({ className }: { className?: string }) { return ( -
+
@@ -196,7 +201,10 @@ function TemplateCardInner({ return (
+{blockTypes.length - 3} @@ -277,7 +285,7 @@ function TemplateCardInner({ {author}
) : ( -
+
)} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx index ae4e71ae2..c7713fed8 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/chat.tsx @@ -28,13 +28,13 @@ import { ChatMessage, OutputSelect, } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/chat/components' -import { - useChatBoundarySync, - useChatDrag, - useChatFileUpload, - useChatResize, -} from '@/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks' +import { useChatFileUpload } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks' import { useScrollManagement } from '@/app/workspace/[workspaceId]/w/[workflowId]/hooks' +import { + useFloatBoundarySync, + useFloatDrag, + useFloatResize, +} from '@/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-float' import { useWorkflowExecution } from '@/app/workspace/[workspaceId]/w/[workflowId]/hooks/use-workflow-execution' import type { BlockLog, ExecutionResult } from '@/executor/types' import { getChatPosition, useChatStore } from '@/stores/chat/store' @@ -312,7 +312,7 @@ export function Chat() { ) // Drag hook - const { handleMouseDown } = useChatDrag({ + const { handleMouseDown } = useFloatDrag({ position: actualPosition, width: chatWidth, height: chatHeight, @@ -320,7 +320,7 @@ export function Chat() { }) // Boundary sync hook - keeps chat within bounds when layout changes - useChatBoundarySync({ + useFloatBoundarySync({ isOpen: isChatOpen, position: actualPosition, width: chatWidth, @@ -334,7 +334,7 @@ export function Chat() { handleMouseMove: handleResizeMouseMove, handleMouseLeave: handleResizeMouseLeave, handleMouseDown: handleResizeMouseDown, - } = useChatResize({ + } = useFloatResize({ position: actualPosition, width: chatWidth, height: chatHeight, diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/components/output-select/output-select.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/components/output-select/output-select.tsx index 239ee1896..40ff48244 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/components/output-select/output-select.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/components/output-select/output-select.tsx @@ -65,7 +65,7 @@ export function OutputSelect({ valueMode = 'id', disablePopoverPortal = false, align = 'start', - maxHeight = 300, + maxHeight = 200, }: OutputSelectProps) { const [open, setOpen] = useState(false) const [highlightedIndex, setHighlightedIndex] = useState(-1) @@ -423,6 +423,7 @@ export function OutputSelect({ maxHeight={maxHeight} maxWidth={300} minWidth={160} + border disablePortal={disablePopoverPortal} onKeyDown={handleKeyDown} tabIndex={0} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks/index.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks/index.ts index dc85c4971..a1b7370b8 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks/index.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/chat/hooks/index.ts @@ -1,5 +1 @@ -export { useChatBoundarySync } from './use-chat-boundary-sync' -export { useChatDrag } from './use-chat-drag' -export type { ChatFile } from './use-chat-file-upload' -export { useChatFileUpload } from './use-chat-file-upload' -export { useChatResize } from './use-chat-resize' +export { type ChatFile, useChatFileUpload } from './use-chat-file-upload' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/diff-controls/diff-controls.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/diff-controls/diff-controls.tsx index 2e7e5c328..570b2edc0 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/diff-controls/diff-controls.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/diff-controls/diff-controls.tsx @@ -1,8 +1,10 @@ import { memo, useCallback } from 'react' +import clsx from 'clsx' import { Eye, EyeOff } from 'lucide-react' import { Button } from '@/components/emcn' import { createLogger } from '@/lib/logs/console/logger' import { useCopilotStore } from '@/stores/panel/copilot/store' +import { useTerminalStore } from '@/stores/terminal' import { useWorkflowDiffStore } from '@/stores/workflow-diff' import { useWorkflowRegistry } from '@/stores/workflows/registry/store' import { mergeSubblockState } from '@/stores/workflows/utils' @@ -11,6 +13,7 @@ import { useWorkflowStore } from '@/stores/workflows/workflow/store' const logger = createLogger('DiffControls') export const DiffControls = memo(function DiffControls() { + const isTerminalResizing = useTerminalStore((state) => state.isResizing) // Optimized: Single diff store subscription const { isShowingDiff, @@ -312,7 +315,10 @@ export const DiffControls = memo(function DiffControls() { return (
diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx index 9e5e870f3..4ca430d85 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/note-block/note-block.tsx @@ -4,7 +4,7 @@ import type { NodeProps } from 'reactflow' import remarkGfm from 'remark-gfm' import { cn } from '@/lib/core/utils/cn' import { useUserPermissionsContext } from '@/app/workspace/[workspaceId]/providers/workspace-permissions-provider' -import { useBlockCore } from '@/app/workspace/[workspaceId]/w/[workflowId]/hooks' +import { useBlockVisual } from '@/app/workspace/[workspaceId]/w/[workflowId]/hooks' import { BLOCK_DIMENSIONS, useBlockDimensions, @@ -76,7 +76,7 @@ const NoteMarkdown = memo(function NoteMarkdown({ content }: { content: string } return ( {children} @@ -121,9 +121,10 @@ const NoteMarkdown = memo(function NoteMarkdown({ content }: { content: string } export const NoteBlock = memo(function NoteBlock({ id, data }: NodeProps) { const { type, config, name } = data - const { activeWorkflowId, isEnabled, isFocused, handleClick, hasRing, ringStyles } = useBlockCore( - { blockId: id, data } - ) + const { activeWorkflowId, isEnabled, handleClick, hasRing, ringStyles } = useBlockVisual({ + blockId: id, + data, + }) const storedValues = useSubBlockStore( useCallback( (state) => { diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/notifications/notifications.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/notifications/notifications.tsx index fe40868ed..410f87750 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/notifications/notifications.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/notifications/notifications.tsx @@ -1,4 +1,5 @@ import { memo, useCallback } from 'react' +import clsx from 'clsx' import { X } from 'lucide-react' import { useParams } from 'next/navigation' import { Button } from '@/components/emcn' @@ -10,6 +11,7 @@ import { openCopilotWithMessage, useNotificationStore, } from '@/stores/notifications' +import { useTerminalStore } from '@/stores/terminal' const logger = createLogger('Notifications') const MAX_VISIBLE_NOTIFICATIONS = 4 @@ -29,6 +31,7 @@ export const Notifications = memo(function Notifications() { const removeNotification = useNotificationStore((state) => state.removeNotification) const clearNotifications = useNotificationStore((state) => state.clearNotifications) const visibleNotifications = notifications.slice(0, MAX_VISIBLE_NOTIFICATIONS) + const isTerminalResizing = useTerminalStore((state) => state.isResizing) /** * Executes a notification action and handles side effects. @@ -95,7 +98,12 @@ export const Notifications = memo(function Notifications() { } return ( -
+
{[...visibleNotifications].reverse().map((notification, index, stacked) => { const depth = stacked.length - index - 1 const xOffset = depth * 3 @@ -105,7 +113,7 @@ export const Notifications = memo(function Notifications() {
0 ? '-mt-[78px]' : '' }`} > diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/components/markdown-renderer.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/components/markdown-renderer.tsx index bc64ca929..3f8969afd 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/components/markdown-renderer.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/components/markdown-renderer.tsx @@ -137,29 +137,29 @@ export default function CopilotMarkdownRenderer({ content }: CopilotMarkdownRend () => ({ // Paragraph p: ({ children }: React.HTMLAttributes) => ( -

+

{children}

), // Headings h1: ({ children }: React.HTMLAttributes) => ( -

+

{children}

), h2: ({ children }: React.HTMLAttributes) => ( -

+

{children}

), h3: ({ children }: React.HTMLAttributes) => ( -

+

{children}

), h4: ({ children }: React.HTMLAttributes) => ( -

+

{children}

), @@ -167,7 +167,7 @@ export default function CopilotMarkdownRenderer({ content }: CopilotMarkdownRend // Lists ul: ({ children }: React.HTMLAttributes) => (
    {children} @@ -175,7 +175,7 @@ export default function CopilotMarkdownRenderer({ content }: CopilotMarkdownRend ), ol: ({ children }: React.HTMLAttributes) => (
      {children} @@ -186,7 +186,7 @@ export default function CopilotMarkdownRenderer({ content }: CopilotMarkdownRend ordered, }: React.LiHTMLAttributes & { ordered?: boolean }) => (
    1. {children} @@ -309,33 +309,35 @@ export default function CopilotMarkdownRenderer({ content }: CopilotMarkdownRend // Bold text strong: ({ children }: React.HTMLAttributes) => ( - {children} + + {children} + ), // Bold text (alternative) b: ({ children }: React.HTMLAttributes) => ( - {children} + {children} ), // Italic text em: ({ children }: React.HTMLAttributes) => ( - {children} + {children} ), // Italic text (alternative) i: ({ children }: React.HTMLAttributes) => ( - {children} + {children} ), // Blockquotes blockquote: ({ children }: React.HTMLAttributes) => ( -
      +
      {children}
      ), // Horizontal rule - hr: () =>
      , + hr: () =>
      , // Links a: ({ href, children, ...props }: React.AnchorHTMLAttributes) => ( @@ -347,29 +349,29 @@ export default function CopilotMarkdownRenderer({ content }: CopilotMarkdownRend // Tables table: ({ children }: React.TableHTMLAttributes) => (
      - +
      {children}
      ), thead: ({ children }: React.HTMLAttributes) => ( - {children} + {children} ), tbody: ({ children }: React.HTMLAttributes) => ( - {children} + {children} ), tr: ({ children }: React.HTMLAttributes) => ( - + {children} ), th: ({ children }: React.ThHTMLAttributes) => ( - + {children} ), td: ({ children }: React.TdHTMLAttributes) => ( - + {children} ), @@ -388,7 +390,7 @@ export default function CopilotMarkdownRenderer({ content }: CopilotMarkdownRend ) return ( -
      +
      {content} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/components/thinking-block.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/components/thinking-block.tsx index 508cf3991..92bc338c8 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/components/thinking-block.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/copilot-message/components/thinking-block.tsx @@ -37,7 +37,7 @@ function ShimmerOverlayText({ label, value, active = false }: ShimmerOverlayText return ( {label} - {value} + {value} {active ? (
      ) } @@ -264,7 +264,7 @@ const CopilotMessage: FC = memo( {/* Inline Checkpoint Discard Confirmation - shown below input in edit mode */} {showCheckpointDiscardModal && ( -
      +

      Continue from a previous message?

      @@ -311,7 +311,7 @@ const CopilotMessage: FC = memo( onClick={handleMessageClick} onMouseEnter={() => setIsHoveringMessage(true)} onMouseLeave={() => setIsHoveringMessage(false)} - className='group relative w-full cursor-pointer rounded-[4px] border border-[var(--surface-11)] bg-[var(--surface-6)] px-[6px] py-[6px] transition-all duration-200 hover:border-[var(--surface-14)] hover:bg-[var(--surface-9)] dark:border-[var(--surface-11)] dark:bg-[var(--surface-9)] dark:hover:border-[var(--surface-13)] dark:hover:bg-[var(--surface-11)]' + className='group relative w-full cursor-pointer rounded-[4px] border border-[var(--surface-11)] bg-[var(--surface-6)] px-[6px] py-[6px] transition-all duration-200 hover:border-[var(--surface-14)] hover:bg-[var(--surface-9)] dark:bg-[var(--surface-9)] dark:hover:border-[var(--surface-13)] dark:hover:bg-[var(--surface-11)]' >
      = memo( {/* Inline Restore Checkpoint Confirmation */} {showRestoreConfirmation && ( -
      +

      Revert to checkpoint? This will restore your workflow to the state saved at this checkpoint.{' '} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/index.ts b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/index.ts index a151aef4d..28de03e6c 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/index.ts +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/index.ts @@ -1,6 +1,6 @@ export * from './copilot-message/copilot-message' -export * from './inline-tool-call/inline-tool-call' export * from './plan-mode-section/plan-mode-section' export * from './todo-list/todo-list' +export * from './tool-call/tool-call' export * from './user-input/user-input' export * from './welcome/welcome' diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/plan-mode-section/plan-mode-section.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/plan-mode-section/plan-mode-section.tsx index 23f016823..ec59e6237 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/plan-mode-section/plan-mode-section.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/plan-mode-section/plan-mode-section.tsx @@ -35,9 +35,9 @@ import CopilotMarkdownRenderer from '@/app/workspace/[workspaceId]/w/[workflowId /** * Shared border and background styles */ -const SURFACE_5 = 'bg-[var(--surface-5)] dark:bg-[var(--surface-5)]' -const SURFACE_9 = 'bg-[var(--surface-9)] dark:bg-[var(--surface-9)]' -const BORDER_STRONG = 'border-[var(--border-strong)] dark:border-[var(--border-strong)]' +const SURFACE_5 = 'bg-[var(--surface-5)]' +const SURFACE_9 = 'bg-[var(--surface-9)]' +const BORDER_STRONG = 'border-[var(--border-strong)]' export interface PlanModeSectionProps { /** @@ -184,8 +184,8 @@ const PlanModeSection: React.FC = ({ style={{ height: `${height}px` }} > {/* Header with build/edit/save/clear buttons */} -

      - +
      + Workflow Plan
      @@ -252,7 +252,7 @@ const PlanModeSection: React.FC = ({ ref={textareaRef} value={editedContent} onChange={(e) => setEditedContent(e.target.value)} - className='h-full min-h-full w-full resize-none border-0 bg-transparent p-0 font-[470] font-season text-[13px] text-[var(--text-primary)] leading-[1.4rem] outline-none ring-0 focus-visible:ring-0 focus-visible:ring-offset-0 dark:text-[var(--text-primary)]' + className='h-full min-h-full w-full resize-none border-0 bg-transparent p-0 font-[470] font-season text-[13px] text-[var(--text-primary)] leading-[1.4rem] outline-none ring-0 focus-visible:ring-0 focus-visible:ring-offset-0' placeholder='Enter your workflow plan...' /> ) : ( @@ -265,7 +265,7 @@ const PlanModeSection: React.FC = ({ className={cn( 'group flex h-[20px] w-full cursor-ns-resize items-center justify-center border-t', BORDER_STRONG, - 'transition-colors hover:bg-[var(--surface-9)] dark:hover:bg-[var(--surface-9)]', + 'transition-colors hover:bg-[var(--surface-9)]', isResizing && SURFACE_9 )} onMouseDown={handleResizeStart} @@ -273,7 +273,7 @@ const PlanModeSection: React.FC = ({ aria-orientation='horizontal' aria-label='Resize plan section' > - +
      ) diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/todo-list/todo-list.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/todo-list/todo-list.tsx index 26a7e417b..8eafe6216 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/todo-list/todo-list.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/todo-list/todo-list.tsx @@ -66,7 +66,7 @@ export const TodoList = memo(function TodoList({ return (
      @@ -84,19 +84,17 @@ export const TodoList = memo(function TodoList({ )} - - Todo: - - + Todo: + {completedCount}/{totalCount}
      {/* Progress bar */} -
      +
      @@ -122,21 +120,20 @@ export const TodoList = memo(function TodoList({ key={todo.id} className={cn( 'flex items-start gap-2 px-3 py-1.5 transition-colors hover:bg-[var(--surface-9)]/50 dark:hover:bg-[var(--surface-11)]/50', - index !== todos.length - 1 && - 'border-[var(--surface-11)] border-b dark:border-[var(--surface-11)]' + index !== todos.length - 1 && 'border-[var(--surface-11)] border-b' )} > {todo.executing ? (
      - +
      ) : (
      {todo.completed ? : null} @@ -146,9 +143,7 @@ export const TodoList = memo(function TodoList({ {todo.content} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/inline-tool-call/inline-tool-call.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/tool-call/tool-call.tsx similarity index 96% rename from apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/inline-tool-call/inline-tool-call.tsx rename to apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/tool-call/tool-call.tsx index c43ae69ed..21a54d0bd 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/inline-tool-call/inline-tool-call.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/copilot/components/tool-call/tool-call.tsx @@ -12,7 +12,7 @@ import { getEnv } from '@/lib/core/config/env' import { CLASS_TOOL_METADATA, useCopilotStore } from '@/stores/panel/copilot/store' import type { CopilotToolCall } from '@/stores/panel/copilot/types' -interface InlineToolCallProps { +interface ToolCallProps { toolCall?: CopilotToolCall toolCallId?: string onStateChange?: (state: any) => void @@ -139,16 +139,11 @@ function ShimmerOverlayText({ // Special tools: use gradient for entire text if (isSpecial) { - const baseTextStyle = { - backgroundImage: 'linear-gradient(90deg, #B99FFD 0%, #D1BFFF 100%)', - WebkitBackgroundClip: 'text', - backgroundClip: 'text', - WebkitTextFillColor: 'transparent', - } - return ( - {text} + + {text} + {active ? (