import { useEffect, useState } from "react"; import { AppsmithLogo } from "~/assets/logos/AppsmithLogo"; import { CalComLogo } from "~/assets/logos/CalComLogo"; import { LyftLogo } from "~/assets/logos/LyftLogo"; import { MiddayLogo } from "~/assets/logos/MiddayLogo"; import { TldrawLogo } from "~/assets/logos/TldrawLogo"; import { UnkeyLogo } from "~/assets/logos/UnkeyLogo"; import { LogoType } from "./LogoType"; import { Header3 } from "./primitives/Headers"; import { Paragraph } from "./primitives/Paragraph"; import { TextLink } from "./primitives/TextLink"; interface QuoteType { quote: string; person: string; } const quotes: QuoteType[] = [ { quote: "Trigger.dev is redefining background jobs for modern developers.", person: "Paul Copplestone, Supabase", }, { quote: "Trigger.dev is a great way to automate email campaigns with Resend, and we've heard nothing but good things from our mutual customers.", person: "Zeno Rocha, Resend", }, { quote: "We love Trigger.dev and it’s had a big impact in dev iteration velocity already.", person: "André Neves, ZBD", }, { quote: "We’ve been looking for a product like Trigger.dev for a really long time - automation that's simple and developer-focused.", person: "Han Wang, Mintlify", }, ]; export function LoginPageLayout({ children, rightContent, }: { children: React.ReactNode; /** Replaces the default testimonials panel on the right (e.g. a promo highlight). */ rightContent?: React.ReactNode; }) { const [randomQuote, setRandomQuote] = useState(null); useEffect(() => { const randomIndex = Math.floor(Math.random() * quotes.length); setRandomQuote(quotes[randomIndex]); }, []); return (
{children}
Having login issues? Email us or{" "} ask us in Discord
{rightContent ?? ( <>
{randomQuote?.quote} {randomQuote?.person}
Trusted by developers at
)}
); }