import { LoaderCircleIcon } from "lucide-react"; import type { DesktopCloudAuthOAuthOption, DesktopCloudAuthOAuthStrategy, } from "../../cloud/desktopAuth"; import { cn } from "../../lib/utils"; import { DesktopClerkAlert, DesktopClerkCard, DesktopClerkFooterAction, DesktopClerkHeader, } from "./DesktopClerkCard"; import { useDesktopClerkSignIn } from "./useDesktopClerkSignIn"; // Mirrors Clerk's compact social-button layout while delegating OAuth to the desktop bridge: // https://github.com/clerk/javascript/blob/52861184477bee99c71552000311a289e91d3b59/packages/ui/src/elements/SocialButtons.tsx export function DesktopClerkSignIn({ onJoinWaitlist }: { onJoinWaitlist: () => void }) { const { isStarting, oauthOptions, startingStrategy, startOAuth } = useDesktopClerkSignIn(); return ( void startOAuth(strategy)} /> ); } export function DesktopClerkSignInCard({ isStarting, oauthOptions, startingStrategy, onJoinWaitlist, onStartOAuth, }: { isStarting: boolean; oauthOptions: readonly DesktopCloudAuthOAuthOption[]; startingStrategy: DesktopCloudAuthOAuthStrategy | null; onJoinWaitlist: () => void; onStartOAuth: (strategy: DesktopCloudAuthOAuthStrategy) => void; }) { return ( Want early access? } > {oauthOptions.length === 0 ? ( No OAuth providers are enabled for desktop sign-in. ) : ( )} ); } function DesktopClerkSocialButtons({ isStarting, oauthOptions, startingStrategy, onStartOAuth, }: { isStarting: boolean; oauthOptions: readonly DesktopCloudAuthOAuthOption[]; startingStrategy: DesktopCloudAuthOAuthStrategy | null; onStartOAuth: (strategy: DesktopCloudAuthOAuthStrategy) => void; }) { const useBlockButtons = oauthOptions.length <= 2; return (
{oauthOptions.map((option) => { const isCurrent = option.strategy === startingStrategy; return ( ); })}
); } function DesktopClerkProviderIcon({ option }: { option: DesktopCloudAuthOAuthOption }) { if (!option.iconUrl) { return ( {option.label.slice(0, 1).toUpperCase()} ); } if (["apple", "github", "vercel"].includes(option.providerId)) { return ( ); } return ; }