Formulario de inicio de sesión completo. Se instala en components/enlolab/.
Bloque
Dependencias: button
NPM: react
registry/blocks/login-form/login-form.tsx
"use client"
import * as React from "react"
import { Button } from "@/components/enlolab/button"
export function LoginForm() {
const [email, setEmail] = React.useState("")
const [password, setPassword] = React.useState("")
const [isLoading, setIsLoading] = React.useState(false)
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault()
setIsLoading(true)
// Simular llamada API
await new Promise(resolve => setTimeout(resolve, 1000))
console.log("Login:", { email, password })
setIsLoading(false)
}
return (
<div className="w-full max-w-md mx-auto p-6 rounded-lg border bg-card">
<h2 className="text-2xl font-bold mb-4">Iniciar Sesión</h2>
<form onSubmit={handleSubmit} className="space-y-4">
<div>
<label htmlFor="email" className="block text-sm font-medium mb-2">
Email
</label>
<input
id="email"
type="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
placeholder="tu@email.com"
required
/>
</div>
<div>
<label htmlFor="password" className="block text-sm font-medium mb-2">
Contraseña
</label>
<input
id="password"
type="password"
value={password}
onChange={(e) => setPassword(e.target.value)}
className="w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
placeholder="••••••••"
required
/>
</div>
<Button type="submit" className="w-full" disabled={isLoading}>
{isLoading ? "Iniciando sesión..." : "Iniciar Sesión"}
</Button>
</form>
</div>
)
}
Instalación
Para instalar este componente, primero configura el registry en tu components.json:
{
"registries": {
"@enlolab": {
"url": "https://ui.enlolab.com/r/{name}.json",
"headers": {
"Authorization": "Bearer ${REGISTRY_TOKEN}"
}
}
}
} Luego instala el componente:
npx shadcn@latest add @enlolab/login-form