अवतार
प्रोफ़ाइल मेनू, टिप्पणी थ्रेड्स और टीम सूचियों के लिए आरंभिक अक्षरों वाले बैकअप के साथ एक उपयोगकर्ता चित्र — निओब्रुटलिस्ट मोटी-सीमा वाली शैली में।
import {
Avatar,
AvatarBadge,अवतार उपयोगकर्ता की इमेज दिखाता है और लोड होते समय या फ़ेल होने पर AvatarFallback — इनिशियल या आइकन — लगा देता है, बिना लेआउट शिफ्ट के। यह Base UI Avatar कंपोनेंट पर बना है और नियोब्रूटलिस्ट रेसिपी के अनुसार स्टाइल किया गया है: मोटा 2px बॉर्डर और बोल्ड हेडिंग-टाइप इनिशियल।
इसे इन स्थितियों में चुनें:
- प्रोफ़ाइल मेनू — हेडर अवतार जो अकाउंट एक्शन खोलता है; Dropdown उदाहरण देखें।
- कमेंट थ्रेड और एक्टिविटी फ़ीड — हर लेखक पंक्ति के पास चेहरा; टूटी या गायब फ़ोटो पर इनिशियल।
- टीम और मेंबर सूची —
AvatarGroupसे सहयोगियों को ओवरलैप करें और ओवरफ़्लोAvatarGroupCountसे सीमित करें।
इंस्टॉलेशन#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/avatar.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/avatar.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/avatar.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/avatar.json
निम्नलिखित डिपेंडेंसी इंस्टॉल करें:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
निम्नलिखित कोड को कॉपी करके अपने प्रोजेक्ट में पेस्ट करें।
"use client"
import * as React from "react"
import { Avatar as AvatarPrimitive } from "radix-ui"
import { cn } from "@/lib/utils"
function Avatar({
className,
size = "default",
...props
}: React.ComponentProps<typeof AvatarPrimitive.Root> & {
size?: "default" | "sm" | "lg"
}) {
return (
<AvatarPrimitive.Root
data-slot="avatar"
data-size={size}
className={cn(
"group/avatar relative flex size-8 shrink-0 rounded-full border-2 select-none data-[size=lg]:size-10 data-[size=sm]:size-6",
className
)}
{...props}
/>
)
}
function AvatarImage({
className,
...props
}: React.ComponentProps<typeof AvatarPrimitive.Image>) {
return (
<AvatarPrimitive.Image
data-slot="avatar-image"
className={cn(
"aspect-square size-full rounded-full object-cover",
className
)}
{...props}
/>
)
}
function AvatarFallback({
className,
...props
}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {
return (
<AvatarPrimitive.Fallback
data-slot="avatar-fallback"
className={cn(
"flex size-full items-center justify-center rounded-full bg-muted font-head text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",
className
)}
{...props}
/>
)
}
function AvatarBadge({ className, ...props }: React.ComponentProps<"span">) {
return (
<span
data-slot="avatar-badge"
className={cn(
"absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none",
"group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
"group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
"group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2",
className
)}
{...props}
/>
)
}
function AvatarGroup({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="avatar-group"
className={cn(
"group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
className
)}
{...props}
/>
)
}
function AvatarGroupCount({
className,
...props
}: React.ComponentProps<"div">) {
return (
<div
data-slot="avatar-group-count"
className={cn(
"relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3",
className
)}
{...props}
/>
)
}
export {
Avatar,
AvatarImage,
AvatarFallback,
AvatarGroup,
AvatarGroupCount,
AvatarBadge,
}
अपने प्रोजेक्ट सेटअप से मेल खाने के लिए import पाथ अपडेट करें।
उपयोग#
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"<Avatar>
<AvatarImage src="https://github.com/shadcn.png" />
<AvatarFallback>CN</AvatarFallback>
</Avatar>कंपोज़िशन#
Avatar बनाने के लिए निम्नलिखित कंपोज़िशन का उपयोग करें:
Avatar
├── AvatarImage
├── AvatarFallback
└── AvatarBadgeAvatarGroup बनाने के लिए निम्नलिखित कंपोज़िशन का उपयोग करें:
AvatarGroup
├── Avatar
│ ├── AvatarImage
│ ├── AvatarFallback
│ └── AvatarBadge
├── Avatar
│ ├── AvatarImage
│ ├── AvatarFallback
│ └── AvatarBadge
└── AvatarGroupCountउदाहरण#
बेसिक#
एक इमेज और फ़ॉलबैक के साथ एक बेसिक avatar कंपोनेंट।
import {
Avatar,
AvatarFallback,Badge#
avatar में badge जोड़ने के लिए AvatarBadge कंपोनेंट का उपयोग करें। badge, avatar के नीचे दाईं ओर पोज़िशन किया जाता है।
import {
Avatar,
AvatarBadge,badge में कस्टम रंग, साइज़ आदि जैसी कस्टम स्टाइल जोड़ने के लिए className prop का उपयोग करें।
<Avatar>
<AvatarImage src="https://github.com/shadcn.png" alt="@shadcn" />
<AvatarFallback>CN</AvatarFallback>
<AvatarBadge className="bg-green-600 dark:bg-green-800" />
</Avatar>आइकन के साथ Badge#
आप <AvatarBadge> के अंदर एक आइकन भी इस्तेमाल कर सकते हैं।
import { PlusIcon } from "lucide-react"
import {Avatar ग्रुप#
avatar का एक ग्रुप जोड़ने के लिए AvatarGroup कंपोनेंट का उपयोग करें।
import {
Avatar,
AvatarFallback,Avatar ग्रुप काउंट#
ग्रुप में एक काउंट जोड़ने के लिए <AvatarGroupCount> का उपयोग करें।
import {
Avatar,
AvatarFallback,आइकन के साथ Avatar ग्रुप#
आप <AvatarGroupCount> के अंदर एक आइकन भी इस्तेमाल कर सकते हैं।
import { PlusIcon } from "lucide-react"
import {साइज़#
avatar का साइज़ बदलने के लिए size prop का उपयोग करें।
import {
Avatar,
AvatarFallback,ड्रॉपडाउन#
आप Avatar कंपोनेंट को dropdown मेन्यू के ट्रिगर के रूप में इस्तेमाल कर सकते हैं।
"use client"
import {RTL#
Neobrutalism में RTL सपोर्ट सक्षम करने के लिए, RTL कॉन्फ़िगरेशन गाइड देखें।
"use client"
import * as React from "react"एक्सेसिबिलिटी#
अवतार एक इमेज है, इसलिए इमेज नियम लागू होते हैं: जब अवतार ही व्यक्ति की पहचान हो तो AvatarImage को व्यक्ति का नाम वाला alt दें, और जब पास में नाम दिख रहा हो तो alt="" — वरना स्क्रीन रीडर नाम दो बार पढ़ेंगे। AvatarFallback के इनिशियल सादा टेक्स्ट हैं और जोर से पढ़े जाते हैं, इसलिए उन्हें सार्थक रखें। जब अवतार मेनू खोले (देखें Dropdown), सुलभ नाम ट्रिगर बटन पर रखें, इमेज पर नहीं।
API रेफ़रेंस#
Avatar#
Avatar कंपोनेंट रूट कंपोनेंट है, जो avatar इमेज और फ़ॉलबैक को रैप करता है।
| Prop | Type | Default |
|---|---|---|
size | "default" | "sm" | "lg" | "default" |
className | string | - |
AvatarImage#
AvatarImage कंपोनेंट avatar इमेज दिखाता है। यह सभी Base UI Avatar Image props स्वीकार करता है।
| Prop | Type | Default |
|---|---|---|
src | string | - |
alt | string | - |
className | string | - |
AvatarFallback#
AvatarFallback कंपोनेंट तब एक फ़ॉलबैक दिखाता है जब इमेज लोड होने में विफल रहती है। यह सभी Base UI Avatar Fallback props स्वीकार करता है।
| Prop | Type | Default |
|---|---|---|
className | string | - |
AvatarBadge#
AvatarBadge कंपोनेंट avatar पर एक badge इंडिकेटर दिखाता है, जो आम तौर पर नीचे दाईं ओर पोज़िशन किया जाता है।
| Prop | Type | Default |
|---|---|---|
className | string | - |
AvatarGroup#
AvatarGroup कंपोनेंट ओवरलैपिंग स्टाइल के साथ avatars का एक ग्रुप दिखाता है।
| Prop | Type | Default |
|---|---|---|
className | string | - |
AvatarGroupCount#
AvatarGroupCount कंपोनेंट avatar ग्रुप में एक काउंट इंडिकेटर दिखाता है, जो आम तौर पर अतिरिक्त avatars की संख्या दर्शाता है।
| Prop | Type | Default |
|---|---|---|
className | string | - |
Base UI Avatar props के बारे में अधिक जानकारी के लिए, Base UI डॉक्यूमेंटेशन देखें।