User View
better-auth-ui/user-viewFreeComponent
Renders a user view that shows the user's avatar alongside their name and email.
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/user-view.jsonSource
1"use client"23import {4 type UsernameAuthClient,5 useAuth,6 useSession7} from "@better-auth-ui/react"8import type { User } from "better-auth"910import { Skeleton } from "@/components/ui/skeleton"11import { cn } from "@/lib/utils"12import { UserAvatar } from "./user-avatar"1314export type UserViewProps = {15 className?: string16 isPending?: boolean17 /**18 * When true, the subtitle line (email when name/username is shown) is hidden.19 * @default false20 */21 hideSubtitle?: boolean22 /** @remarks `User` */23 user?: Partial<User> & {24 username?: string | null25 displayUsername?: string | null26 }27}2829/**30 * Render a compact user item with an avatar, a primary label (display username, name, or email), and an optional subtitle (email).31 *32 * @param isPending - If true and no `user` prop is provided, renders a loading skeleton instead of user details33 * @param className - Additional CSS classes applied to the outer container34 * @param hideSubtitle - When true, omits the muted subtitle row under the primary label35 * @param user - Optional user object to display; when omitted the current session user is used36 * @returns A React element showing the user's avatar with their identifying information37 */38export function UserView({39 className,40 isPending,41 hideSubtitle = false,42 user43}: UserViewProps) {44 const { authClient } = useAuth()45 const { data: session, isPending: sessionPending } = useSession(46 authClient as UsernameAuthClient,47 { enabled: !user && !isPending }48 )4950 const resolvedUser = user ?? session?.user5152 if ((isPending || sessionPending) && !user) {53 return (54 <div className={cn("flex items-center gap-2 min-w-0", className)}>55 <UserAvatar isPending />5657 <div className="grid flex-1 gap-1 text-left text-sm">58 <Skeleton className="h-4 w-24" />5960 {!hideSubtitle && <Skeleton className="h-3 w-32" />}61 </div>62 </div>63 )64 }6566 return (67 <div className={cn("flex items-center gap-2 min-w-0", className)}>68 <UserAvatar user={resolvedUser as User | undefined} />6970 <div className="grid min-w-0 flex-1 text-left text-sm leading-tight">71 <span className="truncate font-medium text-foreground">72 {resolvedUser?.displayUsername ||73 resolvedUser?.name ||74 resolvedUser?.email}75 </span>7677 {!hideSubtitle &&78 (resolvedUser?.displayUsername || resolvedUser?.name) && (79// … 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 |
