registry/default/variants/v-card-10.tsx
"use client";
import { EyeIcon, EyeOffIcon, GitBranch } from "lucide-react";
import { useState } from "react";
import { Button } from "@/registry/default/ui/button";
import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from "@/registry/default/ui/card";
import { Field, FieldLabel } from "@/registry/default/ui/field";
import { Input } from "@/registry/default/ui/input";
import {
InputGroup,
InputGroupAddon,
InputGroupInput,
} from "@/registry/default/ui/input-group";
import { Separator } from "@/registry/default/ui/separator";
export function Pattern() {
const [isVisible, setIsVisible] = useState(false);
return (
<Card className="mx-auto w-full max-w-xs">
<CardHeader>
<CardTitle>Sign in</CardTitle>
<CardDescription>
Enter your email and password to access your account
</CardDescription>
</CardHeader>
<CardContent>
<form className="grid gap-6" onSubmit={(e) => e.preventDefault()}>
<div className="grid gap-4">
<Field>
<FieldLabel htmlFor="email-12">Email address</FieldLabel>
<Input
id="email-12"
placeholder="name@example.com"
required
type="email"
/>
</Field>
<Field>
<div className="flex items-center justify-between">
<FieldLabel htmlFor="password-12">Password</FieldLabel>
<a
className="text-muted-foreground text-xs underline-offset-4 hover:underline"
href="#"
>
Forgot password?
</a>
</div>
<InputGroup>
<InputGroupInput
id="password-12"
placeholder="Password"
required
type={isVisible ? "text" : "password"}
/>
<InputGroupAddon align="inline-end">
<Button
aria-label={isVisible ? "Hide password" : "Show password"}
onClick={() => setIsVisible(!isVisible)}
size="icon-sm"
variant="ghost"
>
{isVisible ? (
<EyeOffIcon aria-hidden="true" />
) : (
<EyeIcon aria-hidden="true" />
)}
</Button>
</InputGroupAddon>
</InputGroup>
</Field>
</div>
<div className="flex flex-col gap-6">
<Button className="w-full" type="submit">
Sign in
</Button>
<div className="flex items-center gap-3 text-muted-foreground text-xs">
<Separator className="flex-1" />
<span>Or continue with</span>
<Separator className="flex-1" />
</div>
<Button className="w-full" variant="outline">
<GitBranch aria-hidden="true" />
GitBranch
</Button>
</div>
</form>
</CardContent>
<CardFooter>
<p className="w-full text-center text-muted-foreground text-xs">
By clicking continue, you agree to our{" "}
<a
className="underline underline-offset-4 hover:text-primary"
href="#"
>
Terms of Service
</a>
</p>
</CardFooter>
</Card>
);
}






















