Sign In
better-auth-ui/sign-inFreeComponent
A complete sign-in form component with email/password and social provider support.
Live preview
live · rendered by the registry
Rendered by better-auth-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://better-auth-ui.com/r/sign-in.jsonSource
1"use client"23import { authMutationKeys } from "@better-auth-ui/core"4import {5 AuthPrompts,6 useAuth,7 useFetchOptions,8 useSignInEmail9} from "@better-auth-ui/react"10import { useIsMutating } from "@tanstack/react-query"11import { Eye, EyeOff } from "lucide-react"12import { type SyntheticEvent, useState } from "react"1314import { Button } from "@/components/ui/button"15import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"16import { Checkbox } from "@/components/ui/checkbox"17import {18 Field,19 FieldDescription,20 FieldError,21 FieldGroup,22 FieldLabel,23 FieldSeparator24} from "@/components/ui/field"25import { Input } from "@/components/ui/input"26import {27 InputGroup,28 InputGroupAddon,29 InputGroupButton,30 InputGroupInput31} from "@/components/ui/input-group"32import { Spinner } from "@/components/ui/spinner"33import { useSignInContinuation } from "@/lib/auth/use-sign-in-continuation"34import { cn } from "@/lib/utils"35import { LastUsedBadge } from "./last-login-method/last-used-badge"36import { ProviderButtons, type SocialLayout } from "./provider-buttons"3738export type SignInProps = {39 className?: string40 socialLayout?: SocialLayout41 socialPosition?: "top" | "bottom"42}4344/**45 * Render the sign-in form UI with email/password, magic link, and social provider options.46 *47 * @param className - Optional additional container class names48 * @param socialLayout - Layout style for social provider buttons49 * @param socialPosition - Position of social provider buttons; `"top"` or `"bottom"`. Defaults to `"bottom"`.50 * @returns The rendered sign-in UI as a JSX element51 */52export function SignIn({53 className,54 socialLayout,55 socialPosition = "bottom"56}: SignInProps) {57 const {58 authClient,59 basePaths,60 emailAndPassword,61 localization,62 plugins,63 socialProviders,64 viewPaths,65 navigate,66 Link67 } = useAuth()6869 const { fetchOptions, resetFetchOptions } = useFetchOptions()70 const continueSignIn = useSignInContinuation()7172 const [password, setPassword] = useState("")7374 const { mutate: signInEmail, isPending: signInEmailPending } = useSignInEmail(75 authClient,76 {77 onError: (error, { email }) => {78 setPassword("")7980 if (error.error?.code === "EMAIL_NOT_VERIFIED") {81 sessionStorage.setItem("better-auth-ui.verify-email", email)82 navigate({83 to: `${basePaths.auth}/${viewPaths.auth.verifyEmail}`84 })85 }8687 resetFetchOptions()88 },89// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from better-auth-ui
All 49 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Account Settingsaccount-settings | better-auth-ui | Components | Free | 2 deps | |
| Active Sessionsactive-sessions | better-auth-ui | Components | Free | 5 deps · 2 files | |
| Additional Fieldadditional-field | better-auth-ui | Components | Free | 5 deps | |
| Adminadmin | better-auth-ui | Components | Free | 4 deps · 3 files | |
| Anonymousanonymous | better-auth-ui | Components | Free | 4 deps · 3 files | |
| API Keyapi-key | better-auth-ui | Components | Free | 4 deps · 10 files | |
| Authauth | better-auth-ui | Components | Free | 2 deps | |
| Auth Providerauth-provider | better-auth-ui | Components | Free | 4 deps · 2 files |
