mirror of
https://github.com/hanzoai/shadcn.git
synced 2026-11-03 03:18:52 +00:00
Major fixes: - Fixed wagmi/Web3 SSR errors by lazy-loading config in Web3Provider - Added SidebarProvider to sidebar-demo components - Added 'use client' to 14 demo files with hooks/state/event handlers - Temporarily disabled force-static on blocks page Build progress: 0 → 258/1035 pages (25%) before hitting /blocks error Remaining issue: - /blocks page has function-passing error during static generation Package versions confirmed: - React 19.2.0 ✅ - Next.js 16.0.0 ✅ - Tailwind CSS 4.1.14 ✅
135 lines
4.7 KiB
TypeScript
135 lines
4.7 KiB
TypeScript
"use client"
|
|
|
|
import { GalleryVerticalEnd } from "lucide-react"
|
|
|
|
import { cn } from "@/lib/utils"
|
|
import { Button } from "@/registry/default/ui/button"
|
|
import {
|
|
Field,
|
|
FieldDescription,
|
|
FieldGroup,
|
|
FieldLabel,
|
|
FieldSeparator,
|
|
} from "@/registry/default/ui/field"
|
|
import { Input } from "@/registry/default/ui/input"
|
|
|
|
function SignupForm({
|
|
className,
|
|
...props
|
|
}: React.ComponentPropsWithoutRef<"form">) {
|
|
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
|
|
e.preventDefault()
|
|
const formData = new FormData(e.currentTarget)
|
|
|
|
// TODO: Add your authentication logic here
|
|
console.log("Form submitted:", Object.fromEntries(formData))
|
|
|
|
// Example: await signIn(formData)
|
|
}
|
|
|
|
return (
|
|
<form
|
|
className={cn("flex flex-col gap-6", className)}
|
|
{...props}
|
|
onSubmit={handleSubmit}
|
|
>
|
|
<FieldGroup>
|
|
<div className="flex flex-col items-center gap-1 text-center">
|
|
<h1 className="text-2xl font-bold">Create your account</h1>
|
|
<p className="text-muted-foreground text-sm text-balance">
|
|
Fill in the form below to create your account
|
|
</p>
|
|
</div>
|
|
<Field>
|
|
<FieldLabel htmlFor="name">Full Name</FieldLabel>
|
|
<Input
|
|
id="name"
|
|
name="name"
|
|
type="text"
|
|
placeholder="John Doe"
|
|
required
|
|
/>
|
|
</Field>
|
|
<Field>
|
|
<FieldLabel htmlFor="email">Email</FieldLabel>
|
|
<Input
|
|
id="email"
|
|
name="email"
|
|
type="email"
|
|
placeholder="[email protected]"
|
|
required
|
|
/>
|
|
<FieldDescription>
|
|
We'll use this to contact you. We will not share your email
|
|
with anyone else.
|
|
</FieldDescription>
|
|
</Field>
|
|
<Field>
|
|
<FieldLabel htmlFor="password">Password</FieldLabel>
|
|
<Input id="password" name="password" type="password" required />
|
|
<FieldDescription>
|
|
Must be at least 8 characters long.
|
|
</FieldDescription>
|
|
</Field>
|
|
<Field>
|
|
<FieldLabel htmlFor="confirm-password">Confirm Password</FieldLabel>
|
|
<Input
|
|
id="confirm-password"
|
|
name="confirm-password"
|
|
type="password"
|
|
required
|
|
/>
|
|
<FieldDescription>Please confirm your password.</FieldDescription>
|
|
</Field>
|
|
<Field>
|
|
<Button type="submit">Create Account</Button>
|
|
</Field>
|
|
<FieldSeparator>Or continue with</FieldSeparator>
|
|
<Field>
|
|
<Button variant="outline" type="button">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
<path
|
|
d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"
|
|
fill="currentColor"
|
|
/>
|
|
</svg>
|
|
Sign up with GitHub
|
|
</Button>
|
|
<FieldDescription className="px-6 text-center">
|
|
Already have an account? <a href="#">Sign in</a>
|
|
</FieldDescription>
|
|
</Field>
|
|
</FieldGroup>
|
|
</form>
|
|
)
|
|
}
|
|
|
|
export default function SignupPage() {
|
|
return (
|
|
<div className="grid min-h-svh lg:grid-cols-2">
|
|
<div className="flex flex-col gap-4 p-6 md:p-10">
|
|
<div className="flex justify-center gap-2 md:justify-start">
|
|
<a href="#" className="flex items-center gap-2 font-medium">
|
|
<div className="bg-primary text-primary-foreground flex size-6 items-center justify-center rounded-md">
|
|
<GalleryVerticalEnd className="size-4" />
|
|
</div>
|
|
Acme Inc.
|
|
</a>
|
|
</div>
|
|
<div className="flex flex-1 items-center justify-center">
|
|
<div className="w-full max-w-xs">
|
|
<SignupForm />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div className="bg-muted relative hidden lg:block">
|
|
<img
|
|
src="/placeholder.svg"
|
|
alt="Image"
|
|
className="absolute inset-0 h-full w-full object-cover dark:brightness-[0.2] dark:grayscale"
|
|
/>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|