From 9e194da309644495b382306c5e261e255d6e83eb Mon Sep 17 00:00:00 2001 From: DeathKaioken Date: Mon, 17 Nov 2025 17:19:11 +0100 Subject: [PATCH] bug: loginform + header navigation adjusted --- src/app/components/nav/Header.tsx | 65 ++++++++++---- src/app/login/components/LoginForm.tsx | 115 ++++++++++++------------- 2 files changed, 101 insertions(+), 79 deletions(-) diff --git a/src/app/components/nav/Header.tsx b/src/app/components/nav/Header.tsx index b91b427..f9d7faa 100644 --- a/src/app/components/nav/Header.tsx +++ b/src/app/components/nav/Header.tsx @@ -54,6 +54,8 @@ export default function Header() { // NEW: permission flag const [hasReferralPerm, setHasReferralPerm] = useState(false) + // NEW: admin management dropdown state + const [adminMgmtOpen, setAdminMgmtOpen] = useState(false) const handleLogout = async () => { try { @@ -405,31 +407,58 @@ export default function Header() { > Dashboard - + {/* MOVED: User Verify now before Management */} - - {/* Contract Management only for admin */} - + + {adminMgmtOpen && ( +
+
+ + + + +
+
+ )} + diff --git a/src/app/login/components/LoginForm.tsx b/src/app/login/components/LoginForm.tsx index 5c8f4c9..2b2b23b 100644 --- a/src/app/login/components/LoginForm.tsx +++ b/src/app/login/components/LoginForm.tsx @@ -13,30 +13,27 @@ export default function LoginForm() { password: '', rememberMe: false }) + const [viewportWidth, setViewportWidth] = useState( + typeof window !== 'undefined' ? window.innerWidth : 1200 + ) const router = useRouter() const { login, error, setError, loading } = useLogin() // Responsive ball visibility useEffect(() => { - const handleResize = () => { - setShowBall(window.innerWidth >= 768) - } - handleResize() + const handleResizeBall = () => setShowBall(window.innerWidth >= 768) + handleResizeBall() + window.addEventListener('resize', handleResizeBall) + return () => window.removeEventListener('resize', handleResizeBall) + }, []) + + // Track viewport width for dynamic scaling + useEffect(() => { + const handleResize = () => setViewportWidth(window.innerWidth) window.addEventListener('resize', handleResize) return () => window.removeEventListener('resize', handleResize) }, []) - // Prevent body scrolling when component mounts - useEffect(() => { - document.body.style.overflow = 'hidden' - document.documentElement.style.overflow = 'hidden' - - return () => { - document.body.style.overflow = 'unset' - document.documentElement.style.overflow = 'unset' - } - }, []) - const handleInputChange = (e: React.ChangeEvent) => { const { name, value, type, checked } = e.target setFormData(prev => ({ @@ -82,63 +79,59 @@ export default function LoginForm() { }) } - const screenWidth = typeof window !== 'undefined' ? window.innerWidth : 1200 - const isMobile = screenWidth < 768 - const isTablet = screenWidth >= 768 && screenWidth <= 1024 - const isSmallLaptop = screenWidth > 1024 && screenWidth <= 1366 - - // Calculate responsive values - const getFormWidth = () => { - if (isMobile) return '98vw' - if (isTablet) return '85vw' - if (isSmallLaptop) return '50vw' - return '40vw' - } - - const getFormScale = () => { - if (isMobile) return undefined - if (isTablet) return 'scale(0.95)' - if (isSmallLaptop) return 'scale(0.9)' - return 'scale(0.85)' - } - - const getFormMaxWidth = () => { - if (isMobile) return 'none' - if (isTablet) return '600px' - if (isSmallLaptop) return '650px' - return '700px' - } + // Dynamic breakpoints + const isMobile = viewportWidth < 640 + const isTablet = viewportWidth >= 640 && viewportWidth < 1024 + const isSmallLaptop = viewportWidth >= 1024 && viewportWidth < 1366 + + // Dynamic width & scale + const formWidth = isMobile + ? '98vw' + : isTablet + ? '85vw' + : isSmallLaptop + ? '50vw' + : '40vw' + + const formMaxWidth = isMobile + ? 'none' + : isTablet + ? '620px' + : isSmallLaptop + ? '660px' + : '720px' + + const formScale = (() => { + if (isMobile) return 1 + if (isTablet) return 0.95 + if (isSmallLaptop) return 0.9 + if (viewportWidth >= 1366 && viewportWidth < 1680) return 0.85 + return 0.82 + })() return (