diff --git a/messages/de.json b/messages/de.json index 870c072..8645185 100644 --- a/messages/de.json +++ b/messages/de.json @@ -9,7 +9,6 @@ "forgotPassword": "Passwort vergessen?", "submit": "Anmelden", "loginWithGoogle": "Login mit Google", - "loginWithFacebook": "Login mit Facebook", "noAccount": "Ich habe noch keinen Account", "signUp": "Registrieren" } diff --git a/src/app/globals.css b/src/app/globals.css index 682e5d8..210b75b 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -123,3 +123,56 @@ @apply bg-background text-foreground; } } + +@keyframes auth-gradient-shift { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +} + +@keyframes auth-blob-float { + 0%, + 100% { + transform: translate(0, 0) scale(1); + } + 33% { + transform: translate(4%, 6%) scale(1.08); + } + 66% { + transform: translate(-3%, -4%) scale(0.96); + } +} + +.auth-animated-gradient { + background: linear-gradient( + 120deg, + oklch(0.97 0 0) 0%, + oklch(0.9 0.05 240) 25%, + oklch(0.93 0.07 85) 50%, + oklch(0.9 0.04 260) 75%, + oklch(0.97 0 0) 100% + ); + background-size: 300% 300%; + animation: auth-gradient-shift 18s ease-in-out infinite; +} + +.auth-gradient-blob { + animation: auth-blob-float 16s ease-in-out infinite; +} + +.auth-gradient-blob-delay { + animation-delay: -8s; +} + +@media (prefers-reduced-motion: reduce) { + .auth-animated-gradient, + .auth-gradient-blob { + animation: none; + } +} diff --git a/src/modules/auth/ui/components/AuthButton.tsx b/src/modules/auth/ui/components/AuthButton.tsx index 337a1c6..56a6692 100644 --- a/src/modules/auth/ui/components/AuthButton.tsx +++ b/src/modules/auth/ui/components/AuthButton.tsx @@ -16,7 +16,7 @@ const AuthButton: React.FC = ({ Icon, label, onClick }) => { onClick(); } }} - className="flex gap-2 py-2 px-3 items-center justify-center rounded-xl border-1 border-blue text-blue w-full sm:w-fit cursor-pointer hover:scale-105 transition-all" + className="flex gap-2 py-2 px-3 items-center justify-center rounded-xl border border-blue/60 bg-white/40 backdrop-blur-md shadow-sm text-blue w-full sm:w-fit cursor-pointer hover:scale-105 hover:bg-white/60 transition-all" >

{label}

diff --git a/src/modules/auth/ui/components/AuthSidebarComponent.tsx b/src/modules/auth/ui/components/AuthSidebarComponent.tsx index 8a231c4..2e40b6d 100644 --- a/src/modules/auth/ui/components/AuthSidebarComponent.tsx +++ b/src/modules/auth/ui/components/AuthSidebarComponent.tsx @@ -11,6 +11,9 @@ interface AuthSidebarComponentProps { step?: number; totalSteps?: number; onStepChange?: (step: number) => void; + className?: string; + /** Short label shown on mobile only, e.g. "Login", "Registrieren" */ + pageLabel?: string; } const AuthSidebarComponent: React.FC = ({ @@ -21,38 +24,56 @@ const AuthSidebarComponent: React.FC = ({ step = 1, totalSteps = 2, onStepChange, + className = "rounded-2xl", + pageLabel, }) => { return ( - - - - Logo - - - -

- {title} -

- {description &&

{description}

} - {isSteps && ( - +
+ {/* Animated Gradient Background */} +
+
+
+
+ + + + + Logo + + + + {/* Mobile-only: short page label (e.g. "Login") */} + {pageLabel && ( +

{pageLabel}

)} - - -

- Bei Fragen:{" "} - - {footer} - -

-
-
+ + +

+ {title} +

+ {description &&

{description}

} + {isSteps && ( + + )} +
+ +

+ Bei Fragen:{" "} + + {footer} + +

+
+ +
); }; diff --git a/src/modules/auth/ui/views/complete-profile-view.tsx b/src/modules/auth/ui/views/complete-profile-view.tsx index 2f6130b..6a540be 100644 --- a/src/modules/auth/ui/views/complete-profile-view.tsx +++ b/src/modules/auth/ui/views/complete-profile-view.tsx @@ -62,21 +62,23 @@ const CompleteProfileView = () => { }; return ( -
+
{/* Sidebar */} -
-
+
+
{/* Formular */} -
-
+
+

Profil vervollständigen

@@ -114,7 +116,11 @@ const CompleteProfileView = () => { error={errors.gender} /> -
diff --git a/src/modules/auth/ui/views/employee-onboaring-view.tsx b/src/modules/auth/ui/views/employee-onboaring-view.tsx index 59d849b..d140674 100644 --- a/src/modules/auth/ui/views/employee-onboaring-view.tsx +++ b/src/modules/auth/ui/views/employee-onboaring-view.tsx @@ -206,10 +206,10 @@ const EmployeeOnboardingView = () => { } return ( -
+
{/* Sidebar with onboarding steps */} -
-
+
+
{ step={step} totalSteps={2} onStepChange={setStep} + pageLabel="Onboarding" + className="rounded-none rounded-b-3xl lg:rounded-2xl" />
{/* Main onboarding form */} -
-
+
+

Herzlich Willkommen!

{employeeEmail}

@@ -276,7 +278,10 @@ const EmployeeOnboardingView = () => { onChange={(e) => setPasswordConfirm(e.target.value)} error={errors.passwordConfirm} /> - @@ -311,7 +316,11 @@ const EmployeeOnboardingView = () => { onChange={(e) => setQualification(e.target.value)} error={errors.qualification} /> - diff --git a/src/modules/auth/ui/views/forgot-password-view.tsx b/src/modules/auth/ui/views/forgot-password-view.tsx index 8979638..7173f8c 100644 --- a/src/modules/auth/ui/views/forgot-password-view.tsx +++ b/src/modules/auth/ui/views/forgot-password-view.tsx @@ -51,21 +51,23 @@ const ForgotPasswordView = () => { }; return ( -
+
{/* Sidebar */} -
-
+
+
{/* Forgot Password Formular */} -
-
+
+

Passwort vergessen?

@@ -85,7 +87,11 @@ const ForgotPasswordView = () => { error={emailError} /> - diff --git a/src/modules/auth/ui/views/login-view.tsx b/src/modules/auth/ui/views/login-view.tsx index 800c6f1..534694a 100644 --- a/src/modules/auth/ui/views/login-view.tsx +++ b/src/modules/auth/ui/views/login-view.tsx @@ -37,20 +37,22 @@ const LoginView = () => { }; return ( -

+
{/* Sidebar */} -
-
+
+
{/* Login-Formular */} -
+
@@ -84,7 +86,7 @@ const LoginView = () => { id="remembering" checked={remember} onCheckedChange={(val: boolean) => setRemember(val)} - className="shadow-none h-5 w-5 bg-white border-blue cursor-pointer" + className="shadow-none h-5 w-5 bg-white/40 backdrop-blur-md border-blue cursor-pointer" />
- @@ -108,7 +114,6 @@ const LoginView = () => { {/* Social Login Buttons */}
-
diff --git a/src/modules/auth/ui/views/register-admin-view.tsx b/src/modules/auth/ui/views/register-admin-view.tsx index 75c6864..6f9eb00 100644 --- a/src/modules/auth/ui/views/register-admin-view.tsx +++ b/src/modules/auth/ui/views/register-admin-view.tsx @@ -134,10 +134,10 @@ const RegisterAdmin = () => { }; return ( -
+
{/* Sidebar with step indicator */} -
-
+
+
{ step={step} totalSteps={3} onStepChange={setStep} + pageLabel="Registrieren" + className="rounded-none rounded-b-3xl lg:rounded-2xl" />
{/* Main form */} -
-
+
+

Sign up for free

{/* Step 1: Personal + login data */} @@ -202,7 +204,11 @@ const RegisterAdmin = () => { error={errors.passwordConfirm} /> - @@ -229,7 +235,11 @@ const RegisterAdmin = () => { placeError={errors.place} /> - @@ -282,7 +292,11 @@ const RegisterAdmin = () => { error={errors.companyNumber} /> - diff --git a/src/modules/auth/ui/views/register-user-view.tsx b/src/modules/auth/ui/views/register-user-view.tsx index a198056..a5fb4f8 100644 --- a/src/modules/auth/ui/views/register-user-view.tsx +++ b/src/modules/auth/ui/views/register-user-view.tsx @@ -96,10 +96,10 @@ const RegisterUserView = () => { }; return ( -
+
{/* Sidebar with step indicator */} -
-
+
+
{ step={step} totalSteps={2} onStepChange={setStep} + pageLabel="Registrieren" + className="rounded-none rounded-b-3xl lg:rounded-2xl" />
{/* Main registration form */} -
-
+
+

Sign up for free

{/* Step 1: Basic account data */} @@ -157,7 +159,10 @@ const RegisterUserView = () => { error={errors.passwordConfirm} /> - @@ -202,7 +207,11 @@ const RegisterUserView = () => { error={errors.gender} /> - @@ -213,7 +222,6 @@ const RegisterUserView = () => { {/* Social login options */}
-
diff --git a/src/modules/auth/ui/views/reset-password-view.tsx b/src/modules/auth/ui/views/reset-password-view.tsx index 50c0ae5..7c429c0 100644 --- a/src/modules/auth/ui/views/reset-password-view.tsx +++ b/src/modules/auth/ui/views/reset-password-view.tsx @@ -86,21 +86,23 @@ const ResetPasswordView = () => { }; return ( -
+
{/* Sidebar */} -
-
+
+
{/* Reset Password Formular */} -
-
+
+

Passwort zurücksetzen

@@ -129,7 +131,11 @@ const ResetPasswordView = () => { error={confirmPasswordError} /> -