diff --git a/apps/sim/app/_styles/globals.css b/apps/sim/app/_styles/globals.css index 6512d7212f1..62913f3040b 100644 --- a/apps/sim/app/_styles/globals.css +++ b/apps/sim/app/_styles/globals.css @@ -10,11 +10,34 @@ * @see stores/constants.ts for the source of truth */ :root { - --sidebar-width: 248px; /* SIDEBAR_WIDTH.DEFAULT */ + --sidebar-width: 0px; /* 0 outside workspace; blocking script sets actual value on workspace pages */ --panel-width: 320px; /* PANEL_WIDTH.DEFAULT */ --toolbar-triggers-height: 300px; /* TOOLBAR_TRIGGERS_HEIGHT.DEFAULT */ --editor-connections-height: 172px; /* EDITOR_CONNECTIONS_HEIGHT.DEFAULT */ --terminal-height: 206px; /* TERMINAL_HEIGHT.DEFAULT */ + --auth-primary-btn-bg: #ffffff; + --auth-primary-btn-border: #ffffff; + --auth-primary-btn-text: #000000; + --auth-primary-btn-hover-bg: #e0e0e0; + --auth-primary-btn-hover-border: #e0e0e0; + --auth-primary-btn-hover-text: #000000; + + /* z-index scale for layered UI + Popover must be above modal so dropdowns inside modals render correctly */ + --z-dropdown: 100; + --z-modal: 200; + --z-popover: 300; + --z-tooltip: 400; + --z-toast: 500; + + /* Shadow scale */ + --shadow-subtle: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + --shadow-medium: 0 4px 12px rgba(0, 0, 0, 0.1); + --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.15); + --shadow-kbd: 0 4px 0 0 rgba(48, 48, 48, 1); + --shadow-kbd-sm: 0 2px 0 0 rgba(48, 48, 48, 1); + --shadow-brand-inset: inset 0 1.25px 2.5px 0 #9b77ff; + --shadow-card: 0 1px 3px rgba(0, 0, 0, 0.04); } .workspace-root { @@ -54,11 +77,23 @@ html[data-sidebar-collapsed] .sidebar-container .text-small { transition: opacity 60ms ease; } +.sidebar-container .sidebar-collapse-show { + opacity: 0; + pointer-events: none; + transition: opacity 120ms ease-out; +} + .sidebar-container[data-collapsed] .sidebar-collapse-hide, html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-hide { opacity: 0; } +.sidebar-container[data-collapsed] .sidebar-collapse-show, +html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-show { + opacity: 1; + pointer-events: auto; +} + html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-remove { display: none; } @@ -159,7 +194,8 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { --border-1: #e0e0e0; /* stronger border */ --surface-6: #e5e5e5; /* popovers, elevated surfaces */ --surface-7: #d9d9d9; - --surface-active: #ececec; /* hover/active state */ + --surface-hover: #f2f2f2; /* hover state */ + --surface-active: #ececec; /* active/selected state */ --workflow-edge: #e0e0e0; /* workflow handles/edges - matches border-1 */ @@ -182,13 +218,19 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { --border-success: #e0e0e0; /* Brand & state */ - --brand-400: #8e4cfb; --brand-secondary: #33b4ff; - --brand-tertiary: #22c55e; - --brand-tertiary-2: #33c482; + --brand-accent: #33c482; --selection: #1a5cf6; --warning: #ea580c; + /* Inverted surface (dark chrome on light page, e.g. tag dropdown) */ + --surface-inverted: #1b1b1b; + --surface-inverted-hover: #363636; + --border-inverted: #363636; + + /* Tooltip (true inversion: always opposite of page) */ + --tooltip-bg: #1b1b1b; + /* Utility */ --white: #ffffff; @@ -197,67 +239,50 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { --font-weight-medium: 440; --font-weight-semibold: 500; - /* Extended palette */ - --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: #22c55e; - - /* Oranges / Ambers */ - --c-F59E0B: #f59e0b; - --c-F97316: #ea580c; - --c-FF972F: #f97316; - - /* Reds */ - --c-DC2626: #dc2626; - --c-F6D2D2: #fecaca; - --c-F87171: #f87171; - --c-FF402F: #ef4444; - --c-B91C1C: #b91c1c; - --c-883827: #7c2d12; + /* Landing / marketing - text (static dark-section colors) */ + --landing-text: #ececec; + --landing-text-muted: #999999; + --landing-text-subtle: #f6f6f6; + --landing-text-dark: #1c1c1c; + --landing-text-secondary: #666666; + --landing-text-body: #cdcdcd; + --landing-text-icon: #939393; + + /* Landing / marketing - surfaces */ + --landing-bg: #1c1c1c; + --landing-bg-elevated: #2a2a2a; + --landing-bg-card: #232323; + --landing-bg-section: #f6f6f6; + --landing-bg-subtle: #fafafa; + --landing-bg-surface: #1e1e1e; + --landing-bg-hover: #f0f0f0; + --landing-bg-skeleton: #e8e8e8; + + /* Landing / marketing - borders */ + --landing-border: #2a2a2a; + --landing-border-light: #e5e5e5; + --landing-border-strong: #3d3d3d; + --landing-border-subtle: #d4d4d4; + + /* Code editor (theme-aware) */ + --code-bg: #f5f5f5; + --code-foreground: #1a1a1a; + --code-line-number: #737373; + + /* Workspace: additional text */ + --text-placeholder: #8d8d8d; + --text-success: #22c55e; + + /* Status / semantic colors */ + --error: #dc2626; + --error-muted: #fecaca; + --error-emphasis: #b91c1c; + --caution: #f59e0b; + --success: #22c55e; + + /* Brand extended */ + --brand-knowledge: #00b0b0; + --selection-dark: #264f78; /* Terminal status badges */ --terminal-status-error-bg: #fef2f2; @@ -268,6 +293,49 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { --terminal-status-warning-bg: #fefce8; --terminal-status-warning-border: #facc15; --terminal-status-warning-color: #a16207; + + /* Badge semantic colors */ + --badge-success-bg: #bbf7d0; + --badge-success-text: #15803d; + --badge-error-bg: #fecaca; + --badge-error-text: #dc2626; + --badge-gray-bg: #e7e5e4; + --badge-gray-text: #57534e; + --badge-blue-bg: #bfdbfe; + --badge-blue-text: #1d4ed8; + --badge-blue-secondary-bg: #bae6fd; + --badge-blue-secondary-text: #0369a1; + --badge-purple-bg: #e9d5ff; + --badge-purple-text: #7c3aed; + --badge-orange-bg: #fed7aa; + --badge-orange-text: #c2410c; + --badge-amber-bg: #fde68a; + --badge-amber-text: #a16207; + --badge-teal-bg: #99f6e4; + --badge-teal-text: #0f766e; + --badge-cyan-bg: #cffafe; + --badge-cyan-text: #0891b2; + --badge-pink-bg: #fbcfe8; + --badge-pink-text: #be185d; + + /* Search/highlight */ + --highlight-search-active: #f6ad55; + --highlight-search: #fcd34d; + --highlight-match-bg: #bae6fd; + --highlight-match-text: #0369a1; + + /* Selection */ + --selection-bg: #add6ff; + + /* Active indicator */ + --indicator-online: #33c482; + --indicator-active: #4ade80; + --indicator-inactive: #b7b7b7; + --indicator-seat-filled: #34b5ff; + + /* Scrollbar colors */ + --scrollbar-thumb-color: #c0c0c0; + --scrollbar-thumb-hover-color: #a8a8a8; } .dark { /* Surface */ @@ -281,7 +349,8 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { --border-1: #3d3d3d; --surface-6: #454545; --surface-7: #505050; - --surface-active: #2c2c2c; /* hover/active state */ + --surface-hover: #262626; /* hover state */ + --surface-active: #2c2c2c; /* active/selected state */ --workflow-edge: #454545; /* workflow handles/edges - same as surface-6 in dark */ @@ -304,13 +373,19 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { --border-success: #575757; /* Brand & state */ - --brand-400: #8e4cfb; --brand-secondary: #33b4ff; - --brand-tertiary: #22c55e; - --brand-tertiary-2: #33c482; + --brand-accent: #33c482; --selection: #4b83f7; --warning: #ff6600; + /* Inverted surface (in dark mode, falls back to standard surfaces) */ + --surface-inverted: #242424; + --surface-inverted-hover: #363636; + --border-inverted: #3d3d3d; + + /* Tooltip (true inversion: always opposite of page) */ + --tooltip-bg: #fdfdfd; + /* Utility */ --white: #ffffff; @@ -319,70 +394,25 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { --font-weight-medium: 480; --font-weight-semibold: 550; - /* 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; - - --c-CFCFCF: #cfcfcf; - - /* 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; + /* Code editor (dark mode overrides) */ + --code-bg: #1f1f1f; + --code-foreground: #eeeeee; + --code-line-number: #a8a8a8; + + /* Workspace text */ + --text-placeholder: #8d8d8d; + --text-success: #22c55e; + + /* Status / semantic (dark overrides where needed) */ + --error: #f87171; + --error-muted: #f6d2d2; + --error-emphasis: #b91c1c; + --caution: #f59e0b; + --success: #22c55e; + + /* Brand extended */ + --brand-knowledge: #00b0b0; + --selection-dark: #264f78; /* Terminal status badges */ --terminal-status-error-bg: #491515; @@ -393,6 +423,52 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { --terminal-status-warning-bg: #3d3520; --terminal-status-warning-border: #5c4d1f; --terminal-status-warning-color: #d4a72c; + + /* Badge semantic colors */ + --badge-success-bg: rgba(34, 197, 94, 0.2); + --badge-success-text: #86efac; + --badge-error-bg: #551a1a; + --badge-error-text: #fca5a5; + --badge-gray-bg: #3a3a3a; + --badge-gray-text: #a8a8a8; + --badge-blue-bg: rgba(59, 130, 246, 0.2); + --badge-blue-text: #93c5fd; + --badge-blue-secondary-bg: rgba(51, 180, 255, 0.2); + --badge-blue-secondary-text: #7dd3fc; + --badge-purple-bg: rgba(168, 85, 247, 0.2); + --badge-purple-text: #d8b4fe; + --badge-orange-bg: rgba(249, 115, 22, 0.2); + --badge-orange-text: #fdba74; + --badge-amber-bg: rgba(245, 158, 11, 0.2); + --badge-amber-text: #fcd34d; + --badge-teal-bg: rgba(20, 184, 166, 0.2); + --badge-teal-text: #5eead4; + --badge-cyan-bg: rgba(14, 165, 233, 0.2); + --badge-cyan-text: #7dd3fc; + --badge-pink-bg: rgba(236, 72, 153, 0.2); + --badge-pink-text: #f9a8d4; + + /* Search/highlight */ + --highlight-search-active: #f6ad55; + --highlight-search: #fcd34d; + --highlight-match-bg: rgba(51, 180, 255, 0.2); + --highlight-match-text: #7dd3fc; + + /* Selection */ + --selection-bg: #264f78; + + /* Active indicator */ + --indicator-online: #33c482; + --indicator-active: #4ade80; + --indicator-inactive: #b7b7b7; + --indicator-seat-filled: #34b5ff; + + /* Scrollbar colors */ + --scrollbar-thumb-color: #5a5a5a; + --scrollbar-thumb-hover-color: #6a6a6a; + + /* Shadow scale - dark */ + --shadow-overlay: 0 16px 48px rgba(0, 0, 0, 0.4); } } @@ -433,9 +509,6 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { caret-color: var(--text-primary); } - .dark body { - @apply antialiased; - } ::-webkit-scrollbar { width: var(--scrollbar-size); height: var(--scrollbar-size); @@ -446,12 +519,12 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { } ::-webkit-scrollbar-thumb { - background-color: #c0c0c0; + background-color: var(--scrollbar-thumb-color); border-radius: var(--radius); } ::-webkit-scrollbar-thumb:hover { - background-color: #a8a8a8; + background-color: var(--scrollbar-thumb-hover-color); } /* Dark Mode Global Scrollbar */ @@ -460,20 +533,20 @@ html[data-sidebar-collapsed] .sidebar-container .sidebar-collapse-btn { } .dark ::-webkit-scrollbar-thumb { - background-color: #5a5a5a; + background-color: var(--scrollbar-thumb-color); } .dark ::-webkit-scrollbar-thumb:hover { - background-color: #6a6a6a; + background-color: var(--scrollbar-thumb-hover-color); } * { scrollbar-width: thin; - scrollbar-color: #c0c0c0 transparent; + scrollbar-color: var(--scrollbar-thumb-color) transparent; } .dark * { - scrollbar-color: #5a5a5a transparent; + scrollbar-color: var(--scrollbar-thumb-color) transparent; } .copilot-scrollable { @@ -600,27 +673,6 @@ input[type="search"]::-ms-clear { animation: placeholder-pulse 1.5s ease-in-out infinite; } - .branded-button-gradient { - background: linear-gradient(to bottom, #8357ff, #6f3dfa) !important; - border-color: #6f3dfa !important; - box-shadow: inset 0 2px 4px 0 #9b77ff !important; - } - - .branded-button-gradient:hover { - background: linear-gradient(to bottom, #8357ff, #6f3dfa) !important; - opacity: 0.9; - } - - .branded-button-custom { - background: var(--brand-primary-hex) !important; - border-color: var(--brand-primary-hex) !important; - } - - .branded-button-custom:hover { - background: var(--brand-primary-hover-hex) !important; - border-color: var(--brand-primary-hover-hex) !important; - } - /** * Panel tab visibility and styling to prevent hydration flash */ @@ -710,12 +762,10 @@ input[type="search"]::-ms-clear { --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; + --brand: #6f3dfa; + --brand-hover: #6338d9; + --brand-link: #6f3dfa; + --brand-link-hover: #6f3dfa; } .dark { @@ -749,12 +799,10 @@ input[type="search"]::-ms-clear { --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; + --brand: #701ffc; + --brand-hover: #802fff; + --brand-link: #9d54ff; + --brand-link-hover: #a66fff; } } diff --git a/apps/sim/app/layout.tsx b/apps/sim/app/layout.tsx index c4d5db0301e..5863c4405d3 100644 --- a/apps/sim/app/layout.tsx +++ b/apps/sim/app/layout.tsx @@ -3,11 +3,7 @@ import Script from 'next/script' import { PublicEnvScript } from 'next-runtime-env' import { BrandedLayout } from '@/components/branded-layout' import { PostHogProvider } from '@/app/_shell/providers/posthog-provider' -import { - generateBrandedMetadata, - generateStructuredData, - generateThemeCSS, -} from '@/ee/whitelabeling' +import { generateBrandedMetadata, generateThemeCSS } from '@/ee/whitelabeling' import '@/app/_styles/globals.css' import { OneDollarStats } from '@/components/analytics/onedollarstats' import { isReactGrabEnabled, isReactScanEnabled } from '@/lib/core/config/feature-flags' @@ -21,8 +17,6 @@ import { season } from '@/app/_styles/fonts/season/season' export const viewport: Viewport = { width: 'device-width', initialScale: 1, - maximumScale: 1, - userScalable: false, themeColor: [ { media: '(prefers-color-scheme: light)', color: '#ffffff' }, { media: '(prefers-color-scheme: dark)', color: '#0c0c0c' }, @@ -32,7 +26,6 @@ export const viewport: Viewport = { export const metadata: Metadata = generateBrandedMetadata() export default function RootLayout({ children }: { children: React.ReactNode }) { - const structuredData = generateStructuredData() const themeCSS = generateThemeCSS() return ( @@ -76,14 +69,6 @@ export default function RootLayout({ children }: { children: React.ReactNode }) strategy='lazyOnload' /> )} - {/* Structured Data for SEO */} -