{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "login", "title": "Login Form", "description": "A dark-themed login form with email/password fields, show/hide password toggle, Google OAuth button, forgot password link, and loading state.", "dependencies": [], "registryDependencies": [], "files": [ { "path": "registry/default/login/login.tsx", "content": "\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { useState } from \"react\";\r\nimport { cn } from \"@/lib/utils\";\r\n\r\nexport interface LoginFormProps {\r\n onSubmit?: (values: { email: string; password: string }) => void;\r\n onGoogleSignIn?: () => void;\r\n onForgotPassword?: () => void;\r\n onSignUp?: () => void;\r\n className?: string;\r\n}\r\n\r\nexport function LoginForm({\r\n onSubmit,\r\n onGoogleSignIn,\r\n onForgotPassword,\r\n onSignUp,\r\n className,\r\n}: LoginFormProps) {\r\n const [email, setEmail] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n\r\n const handleSubmit = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n setLoading(true);\r\n await onSubmit?.({ email, password });\r\n setLoading(false);\r\n };\r\n\r\n return (\r\n
Sign in to your account to continue
\r\n\r\n Don't have an account?{\" \"}\r\n \r\n
\r\n