diff --git a/apps/sim/.cursorrules b/apps/sim/.cursorrules index 3ad7d5336d..0233f7e4d6 100644 --- a/apps/sim/.cursorrules +++ b/apps/sim/.cursorrules @@ -428,7 +428,7 @@ setSidebarWidth: (width) => { ### Tailwind Classes 1. **No Inline Styles**: Use Tailwind utility classes exclusively -2. **Dark Mode**: Always include dark mode variants (`dark:bg-[#1E1E1E]`) +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]`) @@ -441,7 +441,7 @@ setSidebarWidth: (width) => { 'base-classes that-always-apply', isActive && 'active-state-classes', disabled ? 'cursor-not-allowed opacity-60' : 'cursor-pointer hover:bg-accent', - 'dark:bg-[#1E1E1E] dark:border-[#2C2C2C]' // Dark mode variants + 'dark:bg-[var(--surface-1)] dark:border-[var(--border)]' // Dark mode variants )} > ``` diff --git a/apps/sim/app/(auth)/login/login-form.tsx b/apps/sim/app/(auth)/login/login-form.tsx index c39edec29e..b37ae78647 100644 --- a/apps/sim/app/(auth)/login/login-form.tsx +++ b/apps/sim/app/(auth)/login/login-form.tsx @@ -1,7 +1,7 @@ 'use client' import { useEffect, useState } from 'react' -import { Eye, EyeOff } from 'lucide-react' +import { ArrowRight, ChevronRight, Eye, EyeOff } from 'lucide-react' import Link from 'next/link' import { useRouter, useSearchParams } from 'next/navigation' import { Button } from '@/components/ui/button' @@ -106,6 +106,7 @@ export default function LoginPage({ const [passwordErrors, setPasswordErrors] = useState([]) const [showValidationError, setShowValidationError] = useState(false) const [buttonClass, setButtonClass] = useState('auth-button-gradient') + const [isButtonHovered, setIsButtonHovered] = useState(false) const [callbackUrl, setCallbackUrl] = useState('/workspace') const [isInviteFlow, setIsInviteFlow] = useState(false) @@ -113,6 +114,7 @@ export default function LoginPage({ const [forgotPasswordOpen, setForgotPasswordOpen] = useState(false) const [forgotPasswordEmail, setForgotPasswordEmail] = useState('') const [isSubmittingReset, setIsSubmittingReset] = useState(false) + const [isResetButtonHovered, setIsResetButtonHovered] = useState(false) const [resetStatus, setResetStatus] = useState<{ type: 'success' | 'error' | null message: string @@ -482,10 +484,21 @@ export default function LoginPage({ )} @@ -600,10 +613,21 @@ export default function LoginPage({ diff --git a/apps/sim/app/(auth)/reset-password/reset-password-form.tsx b/apps/sim/app/(auth)/reset-password/reset-password-form.tsx index e74a1feab4..8d22e54838 100644 --- a/apps/sim/app/(auth)/reset-password/reset-password-form.tsx +++ b/apps/sim/app/(auth)/reset-password/reset-password-form.tsx @@ -1,7 +1,7 @@ 'use client' import { useEffect, useState } from 'react' -import { Eye, EyeOff } from 'lucide-react' +import { ArrowRight, ChevronRight, Eye, EyeOff } from 'lucide-react' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' @@ -28,6 +28,7 @@ export function RequestResetForm({ className, }: RequestResetFormProps) { const [buttonClass, setButtonClass] = useState('auth-button-gradient') + const [isButtonHovered, setIsButtonHovered] = useState(false) useEffect(() => { const checkCustomBrand = () => { @@ -96,9 +97,20 @@ export function RequestResetForm({ ) @@ -127,6 +139,7 @@ export function SetNewPasswordForm({ const [showPassword, setShowPassword] = useState(false) const [showConfirmPassword, setShowConfirmPassword] = useState(false) const [buttonClass, setButtonClass] = useState('auth-button-gradient') + const [isButtonHovered, setIsButtonHovered] = useState(false) useEffect(() => { const checkCustomBrand = () => { @@ -286,9 +299,20 @@ export function SetNewPasswordForm({ ) diff --git a/apps/sim/app/(auth)/signup/signup-form.tsx b/apps/sim/app/(auth)/signup/signup-form.tsx index 7e3307aca4..61ae6acb7e 100644 --- a/apps/sim/app/(auth)/signup/signup-form.tsx +++ b/apps/sim/app/(auth)/signup/signup-form.tsx @@ -1,7 +1,7 @@ 'use client' import { Suspense, useEffect, useState } from 'react' -import { Eye, EyeOff } from 'lucide-react' +import { ArrowRight, ChevronRight, Eye, EyeOff } from 'lucide-react' import Link from 'next/link' import { useRouter, useSearchParams } from 'next/navigation' import { Button } from '@/components/ui/button' @@ -96,6 +96,7 @@ function SignupFormContent({ const [redirectUrl, setRedirectUrl] = useState('') const [isInviteFlow, setIsInviteFlow] = useState(false) const [buttonClass, setButtonClass] = useState('auth-button-gradient') + const [isButtonHovered, setIsButtonHovered] = useState(false) const [name, setName] = useState('') const [nameErrors, setNameErrors] = useState([]) @@ -506,10 +507,21 @@ function SignupFormContent({ )} diff --git a/apps/sim/app/globals.css b/apps/sim/app/globals.css index 1f9724ce1e..c1dad3022b 100644 --- a/apps/sim/app/globals.css +++ b/apps/sim/app/globals.css @@ -52,13 +52,13 @@ .workflow-container, .workflow-container .react-flow__pane, .workflow-container .react-flow__renderer { - background-color: #e4e4e4 !important; + background-color: var(--bg) !important; } .dark .workflow-container, .dark .workflow-container .react-flow__pane, .dark .workflow-container .react-flow__renderer { - background-color: #1b1b1b !important; + background-color: var(--bg) !important; } /** @@ -75,90 +75,238 @@ } /** - * Theme system - CSS custom properties for light and dark modes + * Dark color tokens - single source of truth for all colors (dark-only) */ @layer base { :root, .light { - --background: 0 0% 100%; - --foreground: 0 0% 3.9%; - --card: 0 0% 99.2%; - --card-foreground: 0 0% 3.9%; - --popover: 0 0% 100%; - --popover-foreground: 0 0% 3.9%; - --primary: 0 0% 11.2%; - --primary-foreground: 0 0% 98%; - --secondary: 0 0% 96.1%; - --secondary-foreground: 0 0% 11.2%; - --muted: 0 0% 96.1%; - --muted-foreground: 0 0% 46.9%; - --accent: 0 0% 92.5%; - --accent-foreground: 0 0% 11.2%; - --destructive: 0 84.2% 60.2%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 89.8%; - --input: 0 0% 89.8%; - --input-background: 0 0% 79.22%; - --ring: 0 0% 3.9%; - --radius: 0.5rem; - --scrollbar-track: 0 0% 85%; - --scrollbar-thumb: 0 0% 65%; - --scrollbar-thumb-hover: 0 0% 55%; - --scrollbar-size: 8px; - --workflow-background: 0 0% 100%; - --card-background: 0 0% 99.2%; - --card-border: 0 0% 89.8%; - --card-text: 0 0% 3.9%; - --card-hover: 0 0% 96.1%; - --base-muted-foreground: #737373; - --gradient-primary: 263 85% 70%; - --gradient-secondary: 336 95% 65%; - --brand-primary-hex: #6f3dfa; - --brand-primary-hover-hex: #6338d9; - --brand-accent-hex: #6f3dfa; - --brand-accent-hover-hex: #6f3dfa; - --brand-background-hex: #ffffff; - --surface-elevated: #202020; + /* Neutrals (surfaces) */ + --bg: #ffffff; + --surface-1: #ffffff; + --surface-2: #fafafa; + --surface-3: #f8f8f8; + --surface-4: #f6f6f6; + --surface-5: #f3f3f3; + --surface-6: #f0f0f0; + --surface-9: #eaeaea; + --surface-11: #e6e6e6; + --surface-12: #e0e0e0; + --surface-13: #dcdcdc; + --surface-14: #d6d6d6; + --surface-15: #cfcfcf; + --surface-elevated: #ffffff; + --bg-strong: #f5f5f5; + + /* Text */ + --text-primary: #1b1b1b; + --text-secondary: #404040; + --text-tertiary: #555555; + --text-muted: #737373; + --text-subtle: #8a8a8a; + --text-inverse: #1b1b1b; + --text-error: #ef4444; + + /* Borders / dividers */ + --border: #dddddd; + --border-strong: #d1d1d1; + --divider: #e5e5e5; + --border-muted: #eeeeee; + + /* Brand & state */ + --brand-400: #8e4cfb; + --brand-500: #6f3dfa; + --brand-secondary: #33b4ff; + --brand-tertiary: #22c55e; + --warning: #ff6600; + + /* Utility */ + --white: #ffffff; + + /* RGB for opacity usage */ + --surface-4-rgb: 246 246 246; + --surface-5-rgb: 243 243 243; + --surface-7-rgb: 230 230 230; + --surface-9-rgb: 234 234 234; + --divider-rgb: 229 229 229; + --white-rgb: 255 255 255; + --black-rgb: 0 0 0; + + /* Extended palette (exhaustive from code usage via -[#...]) */ + /* Neutral deep shades */ + --c-0D0D0D: #0d0d0d; + --c-1A1A1A: #1a1a1a; + --c-1F1F1F: #1f1f1f; + --c-2A2A2A: #2a2a2a; + --c-383838: #383838; + --c-414141: #414141; + --c-442929: #442929; + --c-491515: #491515; + --c-575757: #575757; + --c-686868: #686868; + --c-707070: #707070; + --c-727272: #727272; + --c-737373: #737373; + --c-808080: #808080; + --c-858585: #858585; + --c-868686: #868686; + --c-8D8D8D: #8d8d8d; + --c-939393: #939393; + --c-A8A8A8: #a8a8a8; + --c-B8B8B8: #b8b8b8; + --c-C0C0C0: #c0c0c0; + --c-CDCDCD: #cdcdcd; + --c-D0D0D0: #d0d0d0; + --c-D2D2D2: #d2d2d2; + --c-E0E0E0: #e0e0e0; + --c-E5E5E5: #e5e5e5; + --c-E8E8E8: #e8e8e8; + --c-EEEEEE: #eeeeee; + --c-F0F0F0: #f0f0f0; + --c-F4F4F4: #f4f4f4; + --c-F5F5F5: #f5f5f5; + + /* Blues and cyans */ + --c-00B0B0: #00b0b0; + --c-264F78: #264f78; + --c-2F55FF: #2f55ff; + --c-2FA1FF: #2fa1ff; + --c-336699: #336699; + --c-34B5FF: #34b5ff; + --c-601EE0: #601ee0; + --c-611F69: #611f69; + --c-802FFF: #802fff; + --c-8357FF: #8357ff; + --c-8C10FF: #8c10ff; + + /* Greens */ + --c-4CAF50: #4caf50; + + /* Oranges / Ambers */ + --c-F59E0B: #f59e0b; + --c-F97316: #f97316; + --c-FF972F: #ff972f; + + /* Reds */ + --c-DC2626: #dc2626; + --c-F6D2D2: #f6d2d2; + --c-F87171: #f87171; + --c-FF402F: #ff402f; + --c-B91C1C: #b91c1c; + --c-883827: #883827; } - .dark { - --background: 0 0% 10.59%; - --foreground: 0 0% 98%; - --card: 0 0% 9.0%; - --card-foreground: 0 0% 98%; - --popover: 0 0% 9.0%; - --popover-foreground: 0 0% 98%; - --primary: 0 0% 11.2%; - --primary-foreground: 0 0% 98%; - --secondary: 0 0% 12.0%; - --secondary-foreground: 0 0% 98%; - --muted: 0 0% 17.5%; - --muted-foreground: 0 0% 65.1%; - --accent: 0 0% 17.5%; - --accent-foreground: 0 0% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 16.1%; - --input: 0 0% 16.1%; - --input-background: 0 0% 20.78%; - --ring: 0 0% 83.9%; - --scrollbar-track: 0 0% 17.5%; - --scrollbar-thumb: 0 0% 30%; - --scrollbar-thumb-hover: 0 0% 40%; - --workflow-background: 0 0% 10.59%; - --card-background: 0 0% 9.0%; - --card-border: 0 0% 22.7%; - --card-text: 0 0% 98%; - --card-hover: 0 0% 12.0%; - --base-muted-foreground: #a3a3a3; - --gradient-primary: 263 90% 75%; - --gradient-secondary: 336 100% 72%; - --brand-primary-hex: #701ffc; - --brand-primary-hover-hex: #802fff; - --brand-accent-hex: #9d54ff; - --brand-accent-hover-hex: #a66fff; - --brand-background-hex: #0c0c0c; + /* Neutrals (surfaces) */ + --bg: #1b1b1b; + --surface-1: #1e1e1e; + --surface-2: #232323; + --surface-3: #242424; + --surface-4: #252525; + --surface-5: #272727; + --surface-6: #282828; + --surface-9: #363636; + --surface-11: #3d3d3d; + --surface-12: #434343; + --surface-13: #454545; + --surface-14: #4a4a4a; + --surface-15: #5a5a5a; --surface-elevated: #202020; + --bg-strong: #0c0c0c; + + /* Text */ + --text-primary: #e6e6e6; + --text-secondary: #b1b1b1; + --text-tertiary: #aeaeae; + --text-muted: #787878; + --text-subtle: #7d7d7d; + --text-inverse: #1b1b1b; + --text-error: #ef4444; + + /* Borders / dividers */ + --border: #2c2c2c; + --border-strong: #303030; + --divider: #393939; + --border-muted: #424242; + + /* Brand & state */ + --brand-400: #8e4cfb; + --brand-secondary: #33b4ff; + --brand-tertiary: #22c55e; + --warning: #ff6600; + + /* Utility */ + --white: #ffffff; + + /* RGB for opacity usage */ + --surface-4-rgb: 37 37 37; + --surface-5-rgb: 39 39 39; + --surface-7-rgb: 44 44 44; + --surface-9-rgb: 54 54 54; + --divider-rgb: 57 57 57; + --white-rgb: 255 255 255; + --black-rgb: 0 0 0; + + /* Extended palette (exhaustive from code usage via -[#...]) */ + /* Neutral deep shades */ + --c-0D0D0D: #0d0d0d; + --c-1A1A1A: #1a1a1a; + --c-1F1F1F: #1f1f1f; + --c-2A2A2A: #2a2a2a; + --c-383838: #383838; + --c-414141: #414141; + --c-442929: #442929; + --c-491515: #491515; + --c-575757: #575757; + --c-686868: #686868; + --c-707070: #707070; + --c-727272: #727272; + --c-737373: #737373; + --c-808080: #808080; + --c-858585: #858585; + --c-868686: #868686; + --c-8D8D8D: #8d8d8d; + --c-939393: #939393; + --c-A8A8A8: #a8a8a8; + --c-B8B8B8: #b8b8b8; + --c-C0C0C0: #c0c0c0; + --c-CDCDCD: #cdcdcd; + --c-D0D0D0: #d0d0d0; + --c-D2D2D2: #d2d2d2; + --c-E0E0E0: #e0e0e0; + --c-E5E5E5: #e5e5e5; + --c-E8E8E8: #e8e8e8; + --c-EEEEEE: #eeeeee; + --c-F0F0F0: #f0f0f0; + --c-F4F4F4: #f4f4f4; + --c-F5F5F5: #f5f5f5; + + /* Blues and cyans */ + --c-00B0B0: #00b0b0; + --c-264F78: #264f78; + --c-2F55FF: #2f55ff; + --c-2FA1FF: #2fa1ff; + --c-336699: #336699; + --c-34B5FF: #34b5ff; + --c-601EE0: #601ee0; + --c-611F69: #611f69; + --c-802FFF: #802fff; + --c-8357FF: #8357ff; + --c-8C10FF: #8c10ff; + + /* Greens */ + --c-4CAF50: #4caf50; + + /* Oranges / Ambers */ + --c-F59E0B: #f59e0b; + --c-F97316: #f97316; + --c-FF972F: #ff972f; + + /* Reds */ + --c-DC2626: #dc2626; + --c-F6D2D2: #f6d2d2; + --c-F87171: #f87171; + --c-FF402F: #ff402f; + --c-B91C1C: #b91c1c; + --c-883827: #883827; } } @@ -167,7 +315,7 @@ */ @layer base { * { - @apply border-border; + border-color: var(--border); overscroll-behavior-x: none; } @@ -176,7 +324,8 @@ } body { - @apply bg-background text-foreground; + background-color: var(--bg); + color: var(--text-primary); overscroll-behavior-x: none; overscroll-behavior-y: none; min-height: 100vh; @@ -185,6 +334,19 @@ letter-spacing: 0.28px; } + /* Ensure visible text caret across inputs and editors */ + input, + textarea, + [contenteditable="true"] { + caret-color: var(--text-primary); + } + + .dark input, + .dark textarea, + .dark [contenteditable="true"] { + caret-color: var(--text-primary); + } + .dark body { @apply antialiased; } @@ -194,7 +356,7 @@ } ::-webkit-scrollbar-track { - background: #f5f5f5; + background: var(--white); } ::-webkit-scrollbar-thumb { @@ -208,7 +370,7 @@ /* Dark Mode Global Scrollbar */ .dark ::-webkit-scrollbar-track { - background: #272727; + background: var(--surface-5); } .dark ::-webkit-scrollbar-thumb { @@ -221,11 +383,11 @@ * { scrollbar-width: thin; - scrollbar-color: hsl(var(--muted-foreground) / 0.3) #f5f5f5; + scrollbar-color: hsl(var(--muted-foreground) / 0.3) var(--white); } .dark * { - scrollbar-color: hsl(var(--muted-foreground) / 0.3) #272727; + scrollbar-color: hsl(var(--muted-foreground) / 0.3) var(--surface-5); } .copilot-scrollable { @@ -241,20 +403,20 @@ } .panel-tab-active { - background-color: #f5f5f5; - color: #1a1a1a; - border-color: #e5e5e5; + background-color: var(--white); + color: var(--text-inverse); + border-color: var(--border-muted); } .dark .panel-tab-active { - background-color: #1f1f1f; - color: #ffffff; - border-color: #424242; + background-color: var(--surface-1); + color: var(--white); + border-color: var(--border-muted); } .panel-tab-inactive:hover { - background-color: hsl(var(--secondary)); - color: hsl(var(--card-foreground)); + background-color: var(--surface-9); + color: var(--text-primary); } /** @@ -332,24 +494,29 @@ input[type="search"]::-ms-clear { } .auth-card { - background-color: rgba(255, 255, 255, 0.9) !important; - border-color: #e5e5e5 !important; + background-color: var(--white) !important; + border-color: var(--border-muted) !important; + } + + .dark .auth-card { + background-color: var(--surface-1) !important; + border-color: var(--border-muted) !important; } .auth-text-primary { - color: #1a1a1a !important; + color: var(--text-inverse) !important; } .auth-text-secondary { - color: #4a4a4a !important; + color: var(--text-secondary) !important; } .auth-text-muted { - color: #737373 !important; + color: var(--text-muted) !important; } .auth-divider { - border-color: #e5e5e5 !important; + border-color: var(--border-muted) !important; } .auth-card-shadow { @@ -359,7 +526,7 @@ input[type="search"]::-ms-clear { } .auth-link { - color: #737373 !important; + color: var(--text-muted) !important; } .transition-ring { @@ -399,25 +566,25 @@ input[type="search"]::-ms-clear { } .auth-button-gradient { - background: linear-gradient(to bottom, #8357ff, #6f3dfa) !important; - border-color: #6f3dfa !important; - box-shadow: inset 0 2px 4px 0 #9b77ff !important; + background: linear-gradient(to bottom, var(--brand-500), var(--brand-400)) !important; + border-color: var(--brand-400) !important; + box-shadow: inset 0 2px 4px 0 var(--brand-400) !important; } .auth-button-gradient:hover { - background: linear-gradient(to bottom, #8357ff, #6f3dfa) !important; + background: linear-gradient(to bottom, var(--brand-500), var(--brand-400)) !important; opacity: 0.9; } .auth-button-custom { - background: var(--brand-accent-hex) !important; - border-color: var(--brand-accent-hex) !important; + background: var(--brand-500) !important; + border-color: var(--brand-500) !important; box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.1) !important; } .auth-button-custom:hover { - background: var(--brand-accent-hover-hex, var(--brand-accent-hex)) !important; - border-color: var(--brand-accent-hover-hex, var(--brand-accent-hex)) !important; + background: var(--brand-500) !important; + border-color: var(--brand-500) !important; opacity: 1; } @@ -440,32 +607,120 @@ input[type="search"]::-ms-clear { } html[data-panel-active-tab="copilot"] .panel-container [data-tab-button="copilot"] { - background-color: rgb(53 53 53) !important; - color: rgb(230 230 230) !important; + background-color: var(--surface-11) !important; + color: var(--text-primary) !important; } html[data-panel-active-tab="copilot"] .panel-container [data-tab-button="toolbar"], html[data-panel-active-tab="copilot"] .panel-container [data-tab-button="editor"] { background-color: transparent !important; - color: rgb(174 174 174) !important; + color: var(--text-tertiary) !important; } html[data-panel-active-tab="toolbar"] .panel-container [data-tab-button="toolbar"] { - background-color: rgb(53 53 53) !important; - color: rgb(230 230 230) !important; + background-color: var(--surface-11) !important; + color: var(--text-primary) !important; } html[data-panel-active-tab="toolbar"] .panel-container [data-tab-button="copilot"], html[data-panel-active-tab="toolbar"] .panel-container [data-tab-button="editor"] { background-color: transparent !important; - color: rgb(174 174 174) !important; + color: var(--text-tertiary) !important; } html[data-panel-active-tab="editor"] .panel-container [data-tab-button="editor"] { - background-color: rgb(53 53 53) !important; - color: rgb(230 230 230) !important; + background-color: var(--surface-11) !important; + color: var(--text-primary) !important; } html[data-panel-active-tab="editor"] .panel-container [data-tab-button="copilot"], html[data-panel-active-tab="editor"] .panel-container [data-tab-button="toolbar"] { background-color: transparent !important; - color: rgb(174 174 174) !important; + color: var(--text-tertiary) !important; + } +} + +/** + * @depricated + * Legacy globals (light/dark) kept for backward-compat with old classes. + * Do not modify; remove after migration. + */ +@layer base { + :root, + .light { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --card: 0 0% 99.2%; + --card-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 0% 11.2%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 11.2%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 46.9%; + --accent: 0 0% 92.5%; + --accent-foreground: 0 0% 11.2%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --input: 0 0% 89.8%; + --input-background: 0 0% 100%; + --ring: 0 0% 3.9%; + --radius: 0.5rem; + --scrollbar-track: 0 0% 85%; + --scrollbar-thumb: 0 0% 65%; + --scrollbar-thumb-hover: 0 0% 55%; + --scrollbar-size: 8px; + --workflow-background: 0 0% 100%; + --card-background: 0 0% 99.2%; + --card-border: 0 0% 89.8%; + --card-text: 0 0% 3.9%; + --card-hover: 0 0% 96.1%; + --base-muted-foreground: #737373; + --gradient-primary: 263 85% 70%; + --gradient-secondary: 336 95% 65%; + --brand-primary-hex: #6f3dfa; + --brand-primary-hover-hex: #6338d9; + --brand-accent-hex: #6f3dfa; + --brand-accent-hover-hex: #6f3dfa; + --brand-background-hex: #ffffff; + --surface-elevated: #202020; + } + + .dark { + --background: 0 0% 10.59%; + --foreground: 0 0% 98%; + --card: 0 0% 9.0%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 9.0%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 11.2%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 12.0%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 17.5%; + /* --muted-foreground: 0 0% 65.1%; */ + --accent: 0 0% 17.5%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --input: 0 0% 16.1%; + --input-background: 0 0% 20.78%; + --ring: 0 0% 83.9%; + --scrollbar-track: 0 0% 17.5%; + --scrollbar-thumb: 0 0% 30%; + --scrollbar-thumb-hover: 0 0% 40%; + --workflow-background: 0 0% 10.59%; + --card-background: 0 0% 9.0%; + --card-border: 0 0% 22.7%; + --card-text: 0 0% 98%; + --card-hover: 0 0% 12.0%; + --base-muted-foreground: #a3a3a3; + --gradient-primary: 263 90% 75%; + --gradient-secondary: 336 100% 72%; + --brand-primary-hex: #701ffc; + --brand-primary-hover-hex: #802fff; + --brand-accent-hex: #9d54ff; + --brand-accent-hover-hex: #a66fff; + --brand-background-hex: #0c0c0c; + --surface-elevated: #202020; } } diff --git a/apps/sim/app/layout.tsx b/apps/sim/app/layout.tsx index fcc1be4eda..52652f437f 100644 --- a/apps/sim/app/layout.tsx +++ b/apps/sim/app/layout.tsx @@ -129,7 +129,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) var editorParsed = JSON.parse(editorStored); var editorState = editorParsed?.state; var connectionsHeight = editorState?.connectionsHeight; - if (connectionsHeight !== undefined && connectionsHeight >= 30 && connectionsHeight <= 200) { + if (connectionsHeight !== undefined && connectionsHeight >= 30 && connectionsHeight <= 300) { document.documentElement.style.setProperty('--editor-connections-height', connectionsHeight + 'px'); } } diff --git a/apps/sim/app/theme-provider.tsx b/apps/sim/app/theme-provider.tsx index 64b91918d3..118bee9a42 100644 --- a/apps/sim/app/theme-provider.tsx +++ b/apps/sim/app/theme-provider.tsx @@ -7,20 +7,22 @@ import { ThemeProvider as NextThemesProvider } from 'next-themes' export function ThemeProvider({ children, ...props }: ThemeProviderProps) { const pathname = usePathname() - // Force light mode for certain pages - const forcedTheme = - 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') + // Force dark mode for workspace pages + // Force light mode for certain public pages + const forcedTheme = pathname.startsWith('/workspace') + ? '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 diff --git a/apps/sim/app/workspace/[workspaceId]/knowledge/components/shared.ts b/apps/sim/app/workspace/[workspaceId]/knowledge/components/shared.ts index 9a95c90213..07d6943b84 100644 --- a/apps/sim/app/workspace/[workspaceId]/knowledge/components/shared.ts +++ b/apps/sim/app/workspace/[workspaceId]/knowledge/components/shared.ts @@ -1,8 +1,8 @@ export const filterButtonClass = - 'w-full justify-between rounded-[10px] border-[#E5E5E5] bg-[#FFFFFF] font-normal text-sm dark:border-[#414141] dark:bg-[var(--surface-elevated)]' + 'w-full justify-between rounded-[10px] border-[#E5E5E5] bg-[var(--white)] font-normal text-sm dark:border-[#414141] dark:bg-[var(--surface-elevated)]' export const dropdownContentClass = - 'w-[220px] rounded-lg border-[#E5E5E5] bg-[#FFFFFF] p-0 shadow-xs dark:border-[#414141] dark:bg-[var(--surface-elevated)]' + 'w-[220px] rounded-lg border-[#E5E5E5] bg-[var(--white)] p-0 shadow-xs dark:border-[#414141] dark:bg-[var(--surface-elevated)]' export const commandListClass = 'overflow-y-auto overflow-x-hidden' diff --git a/apps/sim/app/workspace/[workspaceId]/logs/components/dashboard/controls.tsx b/apps/sim/app/workspace/[workspaceId]/logs/components/dashboard/controls.tsx index fd6a75796d..da0c186971 100644 --- a/apps/sim/app/workspace/[workspaceId]/logs/components/dashboard/controls.tsx +++ b/apps/sim/app/workspace/[workspaceId]/logs/components/dashboard/controls.tsx @@ -49,7 +49,7 @@ export function Controls({ placeholder='Search workflows...' value={searchQuery} onChange={(e) => setSearchQuery?.(e.target.value)} - className='h-9 w-full rounded-[11px] border-[#E5E5E5] bg-[#FFFFFF] pr-10 pl-9 dark:border-[#414141] dark:bg-[var(--surface-elevated)]' + className='h-9 w-full rounded-[11px] border-[#E5E5E5] bg-[var(--white)] pr-10 pl-9 dark:border-[#414141] dark:bg-[var(--surface-elevated)]' /> {searchQuery && ( {isExpanded && ( -
+
 = memo(
 
               {/* Inline Checkpoint Discard Confirmation - shown below input in edit mode */}
               {showCheckpointDiscardModal && (
-                
-

+

+

Continue from a previous message?

@@ -278,7 +278,7 @@ const CopilotMessage: FC = memo( className='flex flex-1 items-center justify-center gap-[6px] px-[8px] py-[4px] text-xs' > Cancel - (Esc) + (Esc) - Todo: - + + Todo: + + {completedCount}/{totalCount}
{/* Progress bar */} -
+
@@ -119,20 +121,21 @@ export const TodoList = memo(function TodoList({
{todo.executing ? (
- +
) : (
@@ -144,8 +147,8 @@ export const TodoList = memo(function TodoList({ className={cn( 'flex-1 font-base text-[12px] leading-relaxed', todo.completed - ? 'text-[#787878] line-through dark:text-[#787878]' - : 'text-[#FFFFFF] dark:text-[#FFFFFF]' + ? 'text-[var(--text-muted)] line-through dark:text-[var(--text-muted)]' + : 'text-[var(--white)] dark:text-[var(--white)]' )} > {todo.content} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/user-input/components/mention-menu/mention-menu.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/user-input/components/mention-menu/mention-menu.tsx index 2df4500863..7220bfdc85 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/user-input/components/mention-menu/mention-menu.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/user-input/components/mention-menu/mention-menu.tsx @@ -583,7 +583,9 @@ export function MentionMenu({ {item.label} {item.category === 'logs' && ( <> - · + + · + {formatTimestamp(item.data.createdAt)} @@ -756,11 +758,15 @@ export function MentionMenu({ mentionData.logsList.map((log) => ( insertLogMention(log)}> {log.workflowName} - · + + · + {formatTimestamp(log.createdAt)} - · + + · + {(log.trigger || 'manual').toLowerCase()} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/user-input/user-input.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/user-input/user-input.tsx index 16187a0bbc..1615d5e504 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/user-input/user-input.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/user-input/user-input.tsx @@ -568,8 +568,8 @@ const UserInput = forwardRef(
( placeholder={fileAttachments.isDragging ? 'Drop files here...' : effectivePlaceholder} disabled={disabled} rows={2} - className='relative z-[2] m-0 box-border h-auto min-h-[48px] w-full resize-none overflow-y-auto overflow-x-hidden break-words border-0 bg-transparent px-[2px] py-1 font-medium font-sans text-sm text-transparent leading-[1.25rem] caret-foreground outline-none [-ms-overflow-style:none] [scrollbar-width:none] [text-rendering:auto] focus-visible:ring-0 focus-visible:ring-offset-0 [&::-webkit-scrollbar]:hidden' + className='relative z-[2] m-0 box-border h-auto min-h-[48px] w-full resize-none overflow-y-auto overflow-x-hidden break-words border-0 bg-transparent px-[2px] py-1 font-medium font-sans text-sm text-transparent leading-[1.25rem] caret-foreground outline-none [-ms-overflow-style:none] [scrollbar-width:none] [text-rendering:auto] placeholder:text-[var(--text-muted)] focus-visible:ring-0 focus-visible:ring-offset-0 dark:placeholder:text-[var(--text-muted)] [&::-webkit-scrollbar]:hidden' /> {/* Mention Menu Portal */} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/welcome/welcome.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/welcome/welcome.tsx index a4e31b7e00..3245c2bdc3 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/welcome/welcome.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/components/welcome/welcome.tsx @@ -64,14 +64,16 @@ export function Welcome({ onQuestionClick, mode = 'ask' }: WelcomeProps) { >

{title}

-

{question}

+

+ {question} +

))}
{/* Tips */} -

+

Tip: Use @ to reference chats, workflows, knowledge, blocks, or templates

diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/copilot.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/copilot.tsx index b392224d96..e6e3fffdef 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/copilot.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/copilot/copilot.tsx @@ -334,7 +334,7 @@ export const Copilot = forwardRef(({ panelWidth }, ref > {/* Header */}
-

+

{currentChat?.title || 'New Chat'}

@@ -353,7 +353,7 @@ export const Copilot = forwardRef(({ panelWidth }, ref ) : groupedChats.length === 0 ? ( -
+
No chats yet
) : ( diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/connection-blocks/components/field-item/field-item.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/connection-blocks/components/field-item/field-item.tsx index 9548b68c0c..d650efefe2 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/connection-blocks/components/field-item/field-item.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/connection-blocks/components/field-item/field-item.tsx @@ -91,7 +91,7 @@ export function FieldItem({ onDragStart={handleDragStart} onClick={handleClick} className={clsx( - 'group flex h-[25px] cursor-grab items-center gap-[8px] rounded-[8px] px-[8px] text-[14px] hover:bg-[#2C2C2C] active:cursor-grabbing dark:hover:bg-[#2C2C2C]', + 'group flex h-[25px] cursor-grab items-center gap-[8px] rounded-[8px] px-[8px] text-[14px] hover:bg-[var(--border)] active:cursor-grabbing dark:hover:bg-[var(--border)]', hasChildren && 'cursor-pointer' )} style={{ marginLeft: `${indent}px` }} @@ -99,7 +99,7 @@ export function FieldItem({ {field.name} @@ -109,7 +109,7 @@ export function FieldItem({ diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/connection-blocks/connection-blocks.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/connection-blocks/connection-blocks.tsx index b1bacaf2cb..37faa03ef2 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/connection-blocks/connection-blocks.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/connection-blocks/connection-blocks.tsx @@ -119,7 +119,7 @@ function ConnectionItem({ draggable onDragStart={(e) => onConnectionDragStart(e, connection)} className={clsx( - 'group flex h-[25px] cursor-grab items-center gap-[8px] rounded-[8px] px-[5.5px] text-[14px] hover:bg-[#2C2C2C] active:cursor-grabbing dark:hover:bg-[#2C2C2C]', + 'group flex h-[25px] cursor-grab items-center gap-[8px] rounded-[8px] px-[5.5px] text-[14px] hover:bg-[var(--border)] active:cursor-grabbing dark:hover:bg-[var(--border)]', hasFields && 'cursor-pointer' )} onClick={() => hasFields && onToggleExpand(connection.id)} @@ -141,7 +141,7 @@ function ConnectionItem({ {connection.name} @@ -150,7 +150,7 @@ function ConnectionItem({ diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/checkbox-list/checkbox-list.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/checkbox-list/checkbox-list.tsx index d77db18a2a..47264ca249 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/checkbox-list/checkbox-list.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/checkbox-list/checkbox-list.tsx @@ -49,7 +49,7 @@ function CheckboxItem({ blockId, option, isPreview, subBlockValues, disabled }: /> diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/condition-input/condition-input.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/condition-input/condition-input.tsx index 0e3f2d8c62..617dbf4216 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/condition-input/condition-input.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/condition-input/condition-input.tsx @@ -708,17 +708,19 @@ export function ConditionInput({ {conditionalBlocks.map((block, index) => (
- {block.title} + + {block.title} +
@@ -777,7 +779,7 @@ export function ConditionInput({ variant='ghost' onClick={() => removeBlock(block.id)} disabled={isPreview || conditionalBlocks.length === 1 || disabled} - className='h-auto p-0 text-[#EF4444] hover:text-[#EF4444]' + className='h-auto p-0 text-[var(--text-error)] hover:text-[var(--text-error)]' > Delete Block diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/env-var-dropdown.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/env-var-dropdown.tsx index c56ee66464..ab762b7886 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/env-var-dropdown.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/env-var-dropdown.tsx @@ -284,7 +284,7 @@ export const EnvVarDropdown: React.FC = ({ onCloseAutoFocus={(e) => e.preventDefault()} > {filteredEnvVars.length === 0 ? ( -
+
No matching environment variables
) : ( diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/eval-input/eval-input.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/eval-input/eval-input.tsx index 7896501c3f..8f43563dd9 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/eval-input/eval-input.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/eval-input/eval-input.tsx @@ -130,8 +130,10 @@ export function EvalInput({ } const renderMetricHeader = (metric: EvalMetric, index: number) => ( -
- Metric {index + 1} +
+ + Metric {index + 1} +
@@ -154,7 +156,7 @@ export function EvalInput({ variant='ghost' onClick={() => removeMetric(metric.id)} disabled={isPreview || disabled || metrics.length === 1} - className='h-auto p-0 text-[#EF4444] hover:text-[#EF4444]' + className='h-auto p-0 text-[var(--text-error)] hover:text-[var(--text-error)]' > Delete Metric @@ -172,11 +174,11 @@ export function EvalInput({
{renderMetricHeader(metric, index)} -
+
+
-

No workflow selected

-

+

No workflow selected

+

Select a workflow above to configure inputs

@@ -290,7 +290,7 @@ export function InputMapping({ } if (!childInputFields || childInputFields.length === 0) { - return

No inputs available

+ return

No inputs available

} return ( @@ -354,22 +354,22 @@ function InputMappingField({ } return ( -
+
- + {fieldType && ( - + {fieldType} )}
-
+
{ if (el) inputRefs.current.set(fieldId, el) }} className={cn( - 'allow-scroll !bg-transparent w-full overflow-auto rounded-none border-0 px-[10px] py-[8px] text-transparent caret-white [-ms-overflow-style:none] [scrollbar-width:none] placeholder:text-[#787878] focus-visible:ring-0 focus-visible:ring-offset-0 [&::-webkit-scrollbar]:hidden' + 'allow-scroll !bg-transparent w-full overflow-auto rounded-none border-0 px-[10px] py-[8px] text-transparent caret-white [-ms-overflow-style:none] [scrollbar-width:none] placeholder:text-[var(--text-muted)] focus-visible:ring-0 focus-visible:ring-offset-0 [&::-webkit-scrollbar]:hidden' )} type='text' value={value} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/long-input/long-input.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/long-input/long-input.tsx index fe81b73a8e..926757a080 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/long-input/long-input.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/long-input/long-input.tsx @@ -326,13 +326,13 @@ export function LongInput({ {/* Custom resize handle */} {!wandHook.isStreaming && (
{ e.preventDefault() }} > - +
)}
diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/starter/input-format.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/starter/input-format.tsx index 7e67135fc5..3c9fe88554 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/starter/input-format.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/starter/input-format.tsx @@ -165,7 +165,7 @@ export function FieldFormat({ onClick={() => toggleCollapse(field.id)} >
- + {field.name || `${title} ${index + 1}`} {field.name && showType && {field.type}} @@ -179,7 +179,7 @@ export function FieldFormat({ variant='ghost' onClick={() => removeField(field.id)} disabled={isReadOnly || fields.length === 1} - className='h-auto p-0 text-[#EF4444] hover:text-[#EF4444]' + className='h-auto p-0 text-[var(--text-error)] hover:text-[var(--text-error)]' > Delete Field @@ -240,7 +240,7 @@ export function FieldFormat({ return Array.from({ length: lineCount }, (_, i) => (
{i + 1} @@ -279,7 +279,7 @@ export function FieldFormat({ return Array.from({ length: lineCount }, (_, i) => (
{i + 1} @@ -364,14 +364,14 @@ export function FieldFormat({ key={field.id} data-field-id={field.id} className={cn( - 'rounded-[4px] border border-[#303030] bg-[#1F1F1F]', + 'rounded-[4px] border border-[var(--border-strong)] bg-[#1F1F1F]', field.collapsed ? 'overflow-hidden' : 'overflow-visible' )} > {renderFieldHeader(field, index)} {!field.collapsed && ( -
+
diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/table/table.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/table/table.tsx index 699eca95e1..b8bbf1aced 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/table/table.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/table/table.tsx @@ -134,13 +134,13 @@ export function Table({ const renderHeader = () => ( - + {columns.map((column, index) => ( {column} @@ -187,7 +187,7 @@ export function Table({ key={`${row.id}-${column}`} className={cn( 'relative bg-transparent p-0', - cellIndex < columns.length - 1 && 'border-[#303030] border-r' + cellIndex < columns.length - 1 && 'border-[var(--border-strong)] border-r' )} >
@@ -203,7 +203,7 @@ export function Table({ onDragOver={handlers.onDragOver} disabled={isPreview || disabled} autoComplete='off' - className='w-full border-0 bg-transparent px-[10px] py-[8px] text-transparent caret-white placeholder:text-[#787878] focus-visible:ring-0 focus-visible:ring-offset-0' + className='w-full border-0 bg-transparent px-[10px] py-[8px] text-transparent caret-white placeholder:text-[var(--text-muted)] focus-visible:ring-0 focus-visible:ring-offset-0' />
-
+
{renderHeader()} {rows.map((row, rowIndex) => ( - + {columns.map((column, cellIndex) => renderCell(row, rowIndex, column, cellIndex))} {renderDeleteButton(rowIndex)} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx index ac1591b84b..d49f836322 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/tag-dropdown/tag-dropdown.tsx @@ -1324,7 +1324,7 @@ export const TagDropdown: React.FC = ({ /> {flatTagList.length === 0 ? ( -
+
No matching tags found
) : ( @@ -1362,7 +1362,7 @@ export const TagDropdown: React.FC = ({ : tag} {variableInfo && ( - + {variableInfo.type} )} @@ -1468,7 +1468,7 @@ export const TagDropdown: React.FC = ({ {child.display} {childType && childType !== 'any' && ( - + {childType} )} @@ -1547,7 +1547,7 @@ export const TagDropdown: React.FC = ({ {nestedTag.display} {tagDescription && tagDescription !== 'any' && ( - + {tagDescription} )} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/text/text.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/text/text.tsx index 3076c49983..3bab6d5c57 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/text/text.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/text/text.tsx @@ -27,7 +27,7 @@ export function Text({ blockId, subBlockId, content, className }: TextProps) { return (
{content}
diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/time-input/time-input.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/time-input/time-input.tsx index 1314a69bda..23a996bb26 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/time-input/time-input.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/components/editor/components/sub-block/components/time-input/time-input.tsx @@ -125,7 +125,7 @@ export function TimeInput({ type='text' autoComplete='off' /> - : + : 0) return null return ( -
+
{children}
) @@ -213,8 +213,8 @@ export function CommandItem({
@@ -335,7 +337,7 @@ export function Toolbar({ isActive = true }: ToolbarProps) { >
Triggers
@@ -359,7 +361,7 @@ export function Toolbar({ isActive = true }: ToolbarProps) { onClick={() => handleItemClick(trigger.type, isTriggerCapable)} className={clsx( 'group flex h-[25px] items-center gap-[8px] rounded-[8px] px-[5px] text-[14px]', - 'cursor-pointer hover:bg-[#2C2C2C] active:cursor-grabbing dark:hover:bg-[#2C2C2C]' + 'cursor-pointer hover:bg-[var(--border)] active:cursor-grabbing dark:hover:bg-[var(--border)]' )} >
{trigger.name} @@ -392,7 +394,7 @@ export function Toolbar({ isActive = true }: ToolbarProps) {
{/* Resize Handle */} -
+
Blocks
@@ -435,7 +437,7 @@ export function Toolbar({ isActive = true }: ToolbarProps) { onClick={() => handleItemClick(block.type, false)} className={clsx( 'group flex h-[25px] items-center gap-[8px] rounded-[8px] px-[5.5px] text-[14px]', - 'cursor-pointer hover:bg-[#2C2C2C] active:cursor-grabbing dark:hover:bg-[#2C2C2C]' + 'cursor-pointer hover:bg-[var(--border)] active:cursor-grabbing dark:hover:bg-[var(--border)]' )} >
{block.name} diff --git a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/panel-new.tsx b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/panel-new.tsx index 5b8ec067ad..b6615551b9 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/panel-new.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel-new/panel-new.tsx @@ -258,10 +258,10 @@ export function Panel() { <>