सामग्री पर जाएँ

बैज

कार्ड, तालिकाओं और नेविगेशन आइटम्स पर स्थितियों, गिनतियों और टैग्स के लिए एक छोटा लेबल — नियोब्रूटलिस्ट बॉर्डर-और-छाया उपचार के साथ।

import { Badge } from "@/components/ui/badge"

export function BadgeDemo() {

बैज एक कॉम्पैक्ट इनलाइन लेबल है — सादा <span>, नीचे कोई प्रिमिटिव नहीं, नियोब्रूटलिस्ट रेसिपी के अनुसार स्टाइल किया गया है: मोटे बॉर्डर, कठोर छायाएँ और बोल्ड टाइपोग्राफ़ी। render prop (Base UI के useRender के ज़रिए) किसी भी एलिमेंट — लिंक, बटन — को बैज स्टाइल पहना सकता है।

इसे इन स्थितियों में चुनें:

  • स्टेटस — टेबल पंक्तियों और कार्ड पर "Active", "Draft", "Failed"; एरर के लिए destructive
  • काउंट — अनरीड मैसेज, कार्ट आइटम, नोटिफ़िकेशन कुल, नेव लेबल के पास।
  • टैग और मेटाडेटा — ब्लॉग कार्ड पर कैटेगरी, प्लान टियर, डॉक्स में वर्शन लेबल।

इंस्टॉलेशन

pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/badge.json
npx shadcn@latest add https://neobrutalism.com/r/base/badge.json
yarn dlx shadcn@latest add https://neobrutalism.com/r/base/badge.json
bunx --bun shadcn@latest add https://neobrutalism.com/r/base/badge.json

निम्नलिखित कोड को कॉपी करके अपने प्रोजेक्ट में पेस्ट करें।

components/ui/badge.tsx
import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"
import { Slot } from "radix-ui"

import { cn } from "@/lib/utils"

const badgeVariants = cva(
  "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded border-2 px-2 py-0.5 text-xs font-head font-medium whitespace-nowrap shadow-sm transition-all focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive [&>svg]:pointer-events-none [&>svg]:size-3!",
  {
    variants: {
      variant: {
        default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
        secondary:
          "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
        destructive:
          "bg-destructive text-destructive-foreground [a]:hover:bg-destructive/90",
        outline:
          "bg-transparent text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
        ghost:
          "border-transparent bg-transparent shadow-none hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
        link: "border-transparent bg-transparent shadow-none text-primary underline-offset-4 hover:underline",
      },
    },
    defaultVariants: {
      variant: "default",
    },
  }
)

function Badge({
  className,
  variant = "default",
  asChild = false,
  ...props
}: React.ComponentProps<"span"> &
  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {
  const Comp = asChild ? Slot.Root : "span"

  return (
    <Comp
      data-slot="badge"
      data-variant={variant}
      className={cn(badgeVariants({ variant }), className)}
      {...props}
    />
  )
}

export { Badge, badgeVariants }

अपने प्रोजेक्ट सेटअप से मेल खाने के लिए import पाथ अपडेट करें।

उपयोग

import { Badge } from "@/components/ui/badge"
<Badge variant="default | outline | secondary | destructive">Badge</Badge>

उदाहरण

वेरिएंट

badge का वेरिएंट बदलने के लिए variant prop का उपयोग करें।

import { Badge } from "@/components/ui/badge"

export function BadgeVariants() {

आइकन के साथ

आप badge के अंदर एक आइकन रेंडर कर सकते हैं। आइकन को बाईं ओर रेंडर करने के लिए data-icon="inline-start" और दाईं ओर रेंडर करने के लिए data-icon="inline-end" का उपयोग करें।

import { BadgeCheck, BookmarkIcon } from "lucide-react"

import { Badge } from "@/components/ui/badge"

स्पिनर के साथ

आप badge के अंदर एक spinner रेंडर कर सकते हैं। spinner में data-icon="inline-start" या data-icon="inline-end" prop जोड़ना न भूलें।

import { Badge } from "@/components/ui/badge"
import { Spinner } from "@/components/ui/spinner"

लिंक

किसी लिंक को badge के रूप में रेंडर करने के लिए render prop का उपयोग करें।

import { ArrowUpRightIcon } from "lucide-react"

import { Badge } from "@/components/ui/badge"

कस्टम रंग

आप Badge कंपोनेंट में bg-chart-2 text-primary-foreground जैसी कस्टम क्लास जोड़कर किसी badge के रंग कस्टमाइज़ कर सकते हैं।

import { Badge } from "@/components/ui/badge"

export function BadgeCustomColors() {

RTL

Neobrutalism में RTL सपोर्ट सक्षम करने के लिए, RTL कॉन्फ़िगरेशन गाइड देखें।

"use client"

import * as React from "react"

एक्सेसिबिलिटी

बैज सादा <span> रेंडर करता है — स्क्रीन रीडर को सिर्फ़ उसका टेक्स्ट मिलता है, इसलिए अर्थ सिर्फ़ रंग पर न छोड़ें: variant="destructive" की घोषणा default जैसी ही होती है, टेक्स्ट में "Failed" होना चाहिए। नंगे काउंट को संदर्भ दें — aria-label या विज़ुअली हिडन टेक्स्ट जोड़ें ताकि "3" "3 unread notifications" पढ़े। जब render prop से लिंक के रूप में रेंडर हो, यह साधारण एंकर है और सामान्य लिंक सेमेंटिक्स लागू होते हैं।

API रेफ़रेंस

Badge

Badge कंपोनेंट एक badge या badge जैसा दिखने वाला कंपोनेंट दिखाता है।

PropTypeDefault
variant"default" | "secondary" | "destructive" | "outline" | "ghost" | "link""default"
classNamestring-