diff --git a/apps/sim/app/invite/components/status-card.tsx b/apps/sim/app/invite/components/status-card.tsx index 12b23bcef1..f61c3c486c 100644 --- a/apps/sim/app/invite/components/status-card.tsx +++ b/apps/sim/app/invite/components/status-card.tsx @@ -5,6 +5,7 @@ import { CheckCircle2, Mail, RotateCcw, ShieldX, UserPlus, Users2 } from 'lucide import { useRouter } from 'next/navigation' import { Button } from '@/components/ui/button' import { LoadingAgent } from '@/components/ui/loading-agent' +import { useBrandConfig } from '@/lib/branding/branding' import { inter } from '@/app/fonts/inter' import { soehne } from '@/app/fonts/soehne/soehne' @@ -57,6 +58,7 @@ export function InviteStatusCard({ }: InviteStatusCardProps) { const router = useRouter() const [buttonClass, setButtonClass] = useState('auth-button-gradient') + const brandConfig = useBrandConfig() useEffect(() => { const checkCustomBrand = () => { @@ -116,11 +118,6 @@ export function InviteStatusCard({ return (
- {IconComponent && ( -
- -
- )}

{title}

{description} @@ -172,7 +169,7 @@ export function InviteStatusCard({ > Need help?{' '} Contact support diff --git a/apps/sim/app/not-found.tsx b/apps/sim/app/not-found.tsx new file mode 100644 index 0000000000..8c6792019c --- /dev/null +++ b/apps/sim/app/not-found.tsx @@ -0,0 +1,90 @@ +'use client' + +import { useEffect, useState } from 'react' +import Link from 'next/link' +import { Button } from '@/components/ui/button' +import { useBrandConfig } from '@/lib/branding/branding' +import AuthBackground from '@/app/(auth)/components/auth-background' +import Nav from '@/app/(landing)/components/nav/nav' + +function isColorDark(hexColor: string): boolean { + const hex = hexColor.replace('#', '') + const r = Number.parseInt(hex.substring(0, 2), 16) + const g = Number.parseInt(hex.substring(2, 4), 16) + const b = Number.parseInt(hex.substring(4, 6), 16) + const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255 + return luminance < 0.5 +} + +export default function NotFound() { + const [buttonClass, setButtonClass] = useState('auth-button-gradient') + const brandConfig = useBrandConfig() + + useEffect(() => { + const rootStyle = getComputedStyle(document.documentElement) + const brandBackground = rootStyle.getPropertyValue('--brand-background-hex').trim() + + if (brandBackground && isColorDark(brandBackground)) { + document.body.classList.add('auth-dark-bg') + } else { + document.body.classList.remove('auth-dark-bg') + } + }, []) + + useEffect(() => { + const checkCustomBrand = () => { + const computedStyle = getComputedStyle(document.documentElement) + const brandAccent = computedStyle.getPropertyValue('--brand-accent-hex').trim() + if (brandAccent && brandAccent !== '#6f3dfa') { + setButtonClass('auth-button-custom') + } else { + setButtonClass('auth-button-gradient') + } + } + checkCustomBrand() + 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 ( + +

+ {/* Header */} +
+ + ) +}