22
33import { useEffect, useState } from 'react'
44import { createLogger } from '@sim/logger'
5- import { ArrowRight, ChevronRight, Eye, EyeOff } from 'lucide-react'
5+ import { Eye, EyeOff } from 'lucide-react'
66import Link from 'next/link'
77import { useRouter, useSearchParams } from 'next/navigation'
8- import { Button } from '@/components/ui/button'
98import {
109 Dialog,
1110 DialogContent,
@@ -22,6 +21,7 @@ import { getBaseUrl } from '@/lib/core/utils/urls'
2221import { quickValidateEmail } from '@/lib/messaging/email/validation'
2322import { inter } from '@/app/_styles/fonts/inter/inter'
2423import { soehne } from '@/app/_styles/fonts/soehne/soehne'
24+ import { BrandedButton } from '@/app/(auth)/components/branded-button'
2525import { SocialLoginButtons } from '@/app/(auth)/components/social-login-buttons'
2626import { SSOLoginButton } from '@/app/(auth)/components/sso-login-button'
2727import { useBrandedButtonClass } from '@/hooks/use-branded-button-class'
@@ -107,15 +107,13 @@ export default function LoginPage({
107107 const [passwordErrors, setPasswordErrors] = useState<string[]>([])
108108 const [showValidationError, setShowValidationError] = useState(false)
109109 const buttonClass = useBrandedButtonClass()
110- const [isButtonHovered, setIsButtonHovered] = useState(false)
111110
112111 const [callbackUrl, setCallbackUrl] = useState('/workspace')
113112 const [isInviteFlow, setIsInviteFlow] = useState(false)
114113
115114 const [forgotPasswordOpen, setForgotPasswordOpen] = useState(false)
116115 const [forgotPasswordEmail, setForgotPasswordEmail] = useState('')
117116 const [isSubmittingReset, setIsSubmittingReset] = useState(false)
118- const [isResetButtonHovered, setIsResetButtonHovered] = useState(false)
119117 const [resetStatus, setResetStatus] = useState<{
120118 type: 'success' | 'error' | null
121119 message: string
@@ -491,24 +489,14 @@ export default function LoginPage({
491489 </div>
492490 </div>
493491
494- <Button
492+ <BrandedButton
495493 type='submit'
496- onMouseEnter={() => setIsButtonHovered(true)}
497- onMouseLeave={() => setIsButtonHovered(false)}
498- className='group inline-flex w-full items-center justify-center gap-2 rounded-[10px] border border-[#6F3DFA] bg-gradient-to-b from-[#8357FF] to-[#6F3DFA] py-[6px] pr-[10px] pl-[12px] text-[15px] text-white shadow-[inset_0_2px_4px_0_#9B77FF] transition-all'
499494 disabled={isLoading}
495+ loading={isLoading}
496+ loadingText='Signing in'
500497 >
501- <span className='flex items-center gap-1'>
502- {isLoading ? 'Signing in...' : 'Sign in'}
503- <span className='inline-flex transition-transform duration-200 group-hover:translate-x-0.5'>
504- {isButtonHovered ? (
505- <ArrowRight className='h-4 w-4' aria-hidden='true' />
506- ) : (
507- <ChevronRight className='h-4 w-4' aria-hidden='true' />
508- )}
509- </span>
510- </span>
511- </Button>
498+ Sign in
499+ </BrandedButton>
512500 </form>
513501 )}
514502
@@ -619,25 +607,15 @@ export default function LoginPage({
619607 <p>{resetStatus.message}</p>
620608 </div>
621609 )}
622- <Button
610+ <BrandedButton
623611 type='button'
624612 onClick={handleForgotPassword}
625- onMouseEnter={() => setIsResetButtonHovered(true)}
626- onMouseLeave={() => setIsResetButtonHovered(false)}
627- className='group inline-flex w-full items-center justify-center gap-2 rounded-[10px] border border-[#6F3DFA] bg-gradient-to-b from-[#8357FF] to-[#6F3DFA] py-[6px] pr-[10px] pl-[12px] text-[15px] text-white shadow-[inset_0_2px_4px_0_#9B77FF] transition-all'
628613 disabled={isSubmittingReset}
614+ loading={isSubmittingReset}
615+ loadingText='Sending'
629616 >
630- <span className='flex items-center gap-1'>
631- {isSubmittingReset ? 'Sending...' : 'Send Reset Link'}
632- <span className='inline-flex transition-transform duration-200 group-hover:translate-x-0.5'>
633- {isResetButtonHovered ? (
634- <ArrowRight className='h-4 w-4' aria-hidden='true' />
635- ) : (
636- <ChevronRight className='h-4 w-4' aria-hidden='true' />
637- )}
638- </span>
639- </span>
640- </Button>
617+ Send Reset Link
618+ </BrandedButton>
641619 </div>
642620 </DialogContent>
643621 </Dialog>
0 commit comments