+
+
+ {/* Header */}
+
-
{title}
-
-
-
-
-
- This chat is password-protected. Please enter the password to continue.
-
-
-
- {authError && (
-
- {authError}
-
- )}
-
-
-
-
+
+
)
}
diff --git a/apps/sim/app/chat/components/error-state/error-state.tsx b/apps/sim/app/chat/components/error-state/error-state.tsx
index b5e1b1795..f6bba593f 100644
--- a/apps/sim/app/chat/components/error-state/error-state.tsx
+++ b/apps/sim/app/chat/components/error-state/error-state.tsx
@@ -1,6 +1,11 @@
'use client'
-import { ChatHeader } from '../'
+import { useEffect, useState } from 'react'
+import { useRouter } from 'next/navigation'
+import { Button } from '@/components/ui/button'
+import Nav from '@/app/(landing)/components/nav/nav'
+import { inter } from '@/app/fonts/inter'
+import { soehne } from '@/app/fonts/soehne/soehne'
interface ChatErrorStateProps {
error: string
@@ -8,54 +13,69 @@ interface ChatErrorStateProps {
}
export function ChatErrorState({ error, starCount }: ChatErrorStateProps) {
+ const router = useRouter()
+ const [buttonClass, setButtonClass] = useState('auth-button-gradient')
+
+ useEffect(() => {
+ // Check if CSS variable has been customized
+ const checkCustomBrand = () => {
+ const computedStyle = getComputedStyle(document.documentElement)
+ const brandAccent = computedStyle.getPropertyValue('--brand-accent-hex').trim()
+
+ // Check if the CSS variable exists and is different from the default
+ if (brandAccent && brandAccent !== '#6f3dfa') {
+ setButtonClass('auth-button-custom')
+ } else {
+ setButtonClass('auth-button-gradient')
+ }
+ }
+
+ checkCustomBrand()
+
+ // Also check on window resize or theme changes
+ window.addEventListener('resize', checkCustomBrand)
+ const observer = new MutationObserver(checkCustomBrand)
+ observer.observe(document.documentElement, {
+ attributes: true,
+ attributeFilter: ['style', 'class'],
+ })
+
+ return () => {
+ window.removeEventListener('resize', checkCustomBrand)
+ observer.disconnect()
+ }
+ }, [])
+
return (
-
-
-
-
-
-
-
+
+
+
+
+
+ {/* Error content */}
+
+
+ Chat Unavailable
+
+
+ {error}
+
+
+
+ {/* Action button - matching login form */}
+
+
+
+
-
Error
-
{error}
)
diff --git a/apps/sim/app/chat/components/header/header.tsx b/apps/sim/app/chat/components/header/header.tsx
index d99f57f9e..7c7e8b414 100644
--- a/apps/sim/app/chat/components/header/header.tsx
+++ b/apps/sim/app/chat/components/header/header.tsx
@@ -1,6 +1,10 @@
'use client'
+import Image from 'next/image'
+import Link from 'next/link'
import { GithubIcon } from '@/components/icons'
+import { useBrandConfig } from '@/lib/branding/branding'
+import { inter } from '@/app/fonts/inter'
interface ChatHeaderProps {
chatConfig: {
@@ -16,79 +20,67 @@ interface ChatHeaderProps {
}
export function ChatHeader({ chatConfig, starCount }: ChatHeaderProps) {
+ const brand = useBrandConfig()
const primaryColor = chatConfig?.customizations?.primaryColor || 'var(--brand-primary-hex)'
const customImage = chatConfig?.customizations?.imageUrl || chatConfig?.customizations?.logoUrl
return (
-
-
- {customImage && (
-

- )}
-
- {chatConfig?.customizations?.headerText || chatConfig?.title || 'Chat'}
-
+
+
+
+ {starCount}
+
+
+ {/* Only show Sim logo if no custom branding is set */}
+
+
+
+
+
+ )}
+
)
}
diff --git a/apps/sim/app/chat/components/loading-state/loading-state.tsx b/apps/sim/app/chat/components/loading-state/loading-state.tsx
index 7d99d8481..cc292a7f6 100644
--- a/apps/sim/app/chat/components/loading-state/loading-state.tsx
+++ b/apps/sim/app/chat/components/loading-state/loading-state.tsx
@@ -1,11 +1,29 @@
'use client'
+import { Skeleton } from '@/components/ui/skeleton'
+
export function ChatLoadingState() {
return (
-
-
-
-
+
+
+
+
+ {/* Title skeleton */}
+
+
+
+
+
+ {/* Form skeleton */}
+
+
+
)
diff --git a/apps/sim/app/globals.css b/apps/sim/app/globals.css
index bef5339c3..e857c8bce 100644
--- a/apps/sim/app/globals.css
+++ b/apps/sim/app/globals.css
@@ -120,11 +120,10 @@
--gradient-secondary: 336 95% 65%; /* More vibrant pink */
/* Brand Colors (Default Sim Theme) */
- --brand-primary-hex: #8357ff; /* Primary brand purple - matches Get Started gradient start */
- --brand-primary-hover-hex: #9266ff; /* Primary brand purple hover - matches Get Started hover */
- --brand-secondary-hex: #6f3dfa; /* Secondary brand purple - matches Get Started gradient end */
+ --brand-primary-hex: #6f3dfa; /* Primary brand purple - matches Get Started gradient start */
+ --brand-primary-hover-hex: #6338d9; /* Primary brand purple hover - matches Get Started hover */
--brand-accent-hex: #6f3dfa; /* Accent purple for links - matches sign in button */
- --brand-accent-hover-hex: #8357ff; /* Accent purple hover - matches sign in gradient start */
+ --brand-accent-hover-hex: #6f3dfa; /* Accent purple hover - matches sign in gradient start */
--brand-background-hex: #ffffff; /* Primary light background */
/* UI Surface Colors */
@@ -193,7 +192,6 @@
/* Brand Colors (Keep dark background for actual dark mode) */
--brand-primary-hex: #701ffc; /* Primary brand purple */
--brand-primary-hover-hex: #802fff; /* Primary brand purple hover */
- --brand-secondary-hex: #6518e6; /* Secondary brand purple */
--brand-accent-hex: #9d54ff; /* Accent purple for links */
--brand-accent-hover-hex: #a66fff; /* Accent purple hover */
--brand-background-hex: #0c0c0c; /* Primary dark background */
@@ -399,10 +397,6 @@ input[type="search"]::-ms-clear {
background-color: var(--brand-primary-hover-hex);
}
- .hover\:bg-brand-secondary:hover {
- background-color: var(--brand-secondary-hex);
- }
-
.hover\:text-brand-accent-hover:hover {
color: var(--brand-accent-hover-hex);
}
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 50d1100c9..9e8a49bca 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
@@ -192,7 +192,7 @@ export function CreateChunkModal({