diff --git a/app/auth/forgot-password/ForgotPasswordForm.tsx b/app/auth/forgot-password/ForgotPasswordForm.tsx index 9383fe8..6eecdab 100644 --- a/app/auth/forgot-password/ForgotPasswordForm.tsx +++ b/app/auth/forgot-password/ForgotPasswordForm.tsx @@ -43,12 +43,12 @@ export default function ForgotPasswordForm() { await authApi.forgotPassword({ email: data.email, }); - + // Show success message regardless of whether email exists setIsSubmitted(true); } catch (err) { const apiError = err as ApiError; - + // Still show success message for security (don't reveal if email exists) if (apiError.status === 404) { setIsSubmitted(true); @@ -114,7 +114,7 @@ export default function ForgotPasswordForm() { Return to Sign In - +

Didn't receive the email? Check your spam folder or{' '} - + + {label} + +

+ setFocused(true)} + onBlur={() => setFocused(false)} + style={{ + width: "100%", + padding: "10px 13px", + fontSize: "14px", + fontFamily: "'Outfit', sans-serif", + color: "#1e293b", + background: focused ? "#fff" : "#f8fafc", + border: focused ? "1.5px solid #1e3a8a" : "1.5px solid #e2e8f0", + borderRadius: "8px", + outline: "none", + boxSizing: "border-box", + transition: + "border-color 0.18s, background 0.18s, box-shadow 0.18s", + boxShadow: focused ? "0 0 0 3px rgba(30,58,138,0.10)" : "none", + letterSpacing: "0.12em", + }} + onMouseEnter={(e) => { + if (!focused) e.currentTarget.style.borderColor = "#94a3b8"; + }} + onMouseLeave={(e) => { + if (!focused) e.currentTarget.style.borderColor = "#e2e8f0"; + }} + {...props} + /> + +
+ {showStrength && } - {showStrength && } - - ); -}); + ); + }, +); export default PasswordInput; \ No newline at end of file diff --git a/components/ui/Toast.tsx b/components/ui/Toast.tsx index cb88c41..0043f3d 100644 --- a/components/ui/Toast.tsx +++ b/components/ui/Toast.tsx @@ -7,7 +7,6 @@ import React, { createContext, useContext, HTMLAttributes, - ForwardRefRenderFunction, forwardRef, } from "react"; @@ -177,10 +176,6 @@ export const ToastProvider: React.FC = ({ setToasts((prev) => prev.filter((toast) => toast.id !== id)); }, []); - // const removeToast = useCallback((id: string) => { - // setToasts((prev) => prev.filter((toast) => toast.id !== id)); - // }, []); - const addToast = useCallback( (toast: Omit): string => { const id = generateId(); @@ -283,12 +278,12 @@ const ToastItem = forwardRef(function ToastItem( const [isVisible, setIsVisible] = useState(false); const [isLeaving, setIsLeaving] = useState(false); - // const handleClose = useCallback(() => { - // setIsLeaving(true); - // setTimeout(() => { - // onClose(id); - // }, 300); - // }, [id, onClose]); + const handleClose = useCallback(() => { + setIsLeaving(true); + setTimeout(() => { + onClose(id); + }, 300); + }, [id, onClose]); // Handle animation on mount useEffect(() => { @@ -297,13 +292,6 @@ const ToastItem = forwardRef(function ToastItem( }); }, []); - const handleClose = useCallback(() => { - setIsLeaving(true); - setTimeout(() => { - onClose(id); - }, 300); - }, [id, onClose]); - // Handle auto-dismiss useEffect(() => { const dismissTime = durationMap[duration]; @@ -430,4 +418,4 @@ export const Toast = forwardRef(function Toast( Toast.displayName = "Toast"; -export default Toast; +export default Toast; \ No newline at end of file