+ {this.state.error.stack}
+
+ {subtitle}
)} diff --git a/frontend/src/proprietary/routes/login/OAuthButtons.tsx b/frontend/src/proprietary/routes/login/OAuthButtons.tsx index a6e0679d7..b6886bbc4 100644 --- a/frontend/src/proprietary/routes/login/OAuthButtons.tsx +++ b/frontend/src/proprietary/routes/login/OAuthButtons.tsx @@ -28,9 +28,22 @@ interface OAuthButtonsProps { isSubmitting: boolean layout?: 'vertical' | 'grid' | 'icons' enabledProviders?: OAuthProvider[] // List of full auth paths from backend (e.g., '/oauth2/authorization/google', '/saml2/authenticate/stirling') + ctaPrefix?: string + styleVariant?: 'neutral' | 'tinted' | 'outline' | 'light' + demoMode?: boolean + useNewStyle?: boolean } -export default function OAuthButtons({ onProviderClick, isSubmitting, layout = 'vertical', enabledProviders = [] }: OAuthButtonsProps) { +export default function OAuthButtons({ + onProviderClick, + isSubmitting, + layout = 'vertical', + enabledProviders = [], + ctaPrefix, + styleVariant = 'neutral', + demoMode = false, + useNewStyle = false, +}: OAuthButtonsProps) { const { t } = useTranslation(); // Debug mode: show all providers for UI testing @@ -65,6 +78,21 @@ export default function OAuthButtons({ onProviderClick, isSubmitting, layout = ' return null; } + const isSingleProvider = providers.length === 1; + const isTinted = styleVariant === 'tinted'; + const isOutline = styleVariant === 'outline'; + const isLight = styleVariant === 'light'; + const accentMap: Record