// src/components/auth/LoginForm.tsx 'use client'; import * as React from 'react'; import Button from '@/components/ui/Button'; type LoginValues = { email: string; password: string; rememberMe: boolean; }; type SocialProvider = 'google' | 'github'; export interface LoginFormProps { title?: string; subtitle?: string; onSubmit?: (values: LoginValues) => void | Promise; isSubmitting?: boolean; errorMessage?: string | null; showRememberMe?: boolean; showSocialLogin?: boolean; onSocialClick?: (provider: SocialProvider) => void; } const LoginForm: React.FC = ({ title = 'Bitte melde dich an', subtitle, onSubmit, isSubmitting, errorMessage, showRememberMe = true, showSocialLogin = true, onSocialClick, }) => { const [form, setForm] = React.useState({ email: '', password: '', rememberMe: false, }); const handleChange = (field: keyof LoginValues) => (e: React.ChangeEvent) => { const value = field === 'rememberMe' ? e.target.checked : e.target.value; setForm((prev) => ({ ...prev, [field]: value as never })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!onSubmit) return; await onSubmit(form); }; return (
{/* Header */}
Your Company Your Company

{title}

{subtitle && (

{subtitle}

)}
{/* Card */}
{/* Benutzername / E-Mail */}
{/* Password */}
{/* Remember + Forgot */}
{showRememberMe && (
)}
{/* Error */} {errorMessage && (

{errorMessage}

)} {/* Submit */}
{/* Social login */} {showSocialLogin && (

Oder anmelden mit

{/* Google */} {/* GitHub */}
)}
); }; export default LoginForm;