Badge
badgeuiSmall inline label for status, counts, or tags — sits beside other content, not as a standalone control. Seven variants: `default`, `secondary`, `destructive`, `outline`, `success`, `warning`, `info`.
Installation
$pnpm dlx shadcn@latest add https://uipkge.dev/r/react/badge.json$npx shadcn@latest add https://uipkge.dev/r/react/badge.json$yarn dlx shadcn@latest add https://uipkge.dev/r/react/badge.json$bunx shadcn@latest add https://uipkge.dev/r/react/badge.jsonNamed registry:
npx shadcn@latest add @uipkge-react/badgeInstalls to:components/ui/badge/Examples
Loading interactive previews…
Loading interactive previews…
Props
| Name | Type / Values | Default | Required |
|---|---|---|---|
variant | 'default''secondary''destructive''outline''success''warning''info' | default | optional |
wrap | 'true' | — | optional |
asChildRender the child element as the badge (e.g. an <a>) instead of a <span>. | boolean | false | optional |
npm dependencies
Used by
ab-test-variant-resultsaccess-request-workflowad-spend-roi-dashboardadvance-selectagent-memory-inspectorai-agent-orchestratorai-code-review-assistantai-crm-pipeline-dashboardai-saas-command-centerairbnb-host-earningsannouncementannouncement-bannerannouncement-banner-splitannouncement-corner-toastannouncement-countdown-barannouncement-rotating-stripapi-documentation-pageapi-keysarticle-editor-toolbarasset-tracking-mapassignment-submission-dropzoneaudio-waveform-transcriptaudit-event-streamaudit-logauthor-bio-boxbackorder-split-shipment-managerbank-account-connectorbanner-announcement-stickybefore-after-side-by-sidebefore-after-togglebenefits-enrollment-portalbento-01bento-asymmetric-gridbento-metrics-mixedbill-of-lading-viewerbilling-accountbilling-usage-centerblog-post-card-gridboard-resolution-signoffbookmark-manager-gridcap-table-ownership-summarycareers-job-boardcart-drawercase-studycase-study-featured-storycase-study-filterable-listcase-study-metric-cardscase-study-metric-comparisoncase-study-results-stripcash-flow-treasury-dashboardcategory-showcasecdc-replication-streamcertificate-credential-cardchangelogchangelog-release-notes-timelinecloud-backup-schedulecode-diff-reviewcode-install-commandcode-snippet-playgroundcode-tabs-multi-languagecode-terminal-sessioncold-chain-temp-monitorcolumn-profiling-summarycoming-sooncommercial-invoice-generatorcommute-reimbursement-claimscomparison-migration-pathcomparison-tablecomparison-vs-alternativescompensation-band-benchmarkingcompliance-sanctions-screenercompliance-soc2-readinesscontact-01content-calendar-matrixcontract-redline-diffcontractor-timesheet-approvalcookie-consentcookie-consent-barcookie-consent-preferencescourse-curriculum-outlinecrm-sales-call-workbenchcron-job-schedulercrypto-wallet-portfoliocta-01cta-final-bandcta-split-demo-request-modalcta-split-panelcurrency-converter-widgetcustomer-journey-mapcustomer-metrics-bandcustomer-reviewscustoms-clearance-trackerdaily-standup-summarydata-catalog-lineagedata-contract-governancedata-explorerdata-mesh-domain-catalogdata-product-carddata-quality-metricsdata-retention-policy-managerdata-tabledata-table-pagedatabase-migration-schema-diffdatabase-schema-viewerdbt-model-graphdecision-matrix-tabledefi-staking-yield-vaultdelivery-proof-carddelivery-tracking-mapdemo-guided-tourdemo-sandbox-paneldeployment-pipelinedisaster-response-mapdispatch-assignment-boarddns-record-managerdoctor-appointment-schedulerdriver-inspection-checklistemail-campaign-composeremail-template-previeweremployee-org-chart-treeemployee-pulse-survey-resultsenterprise-workspace-switcherenvironment-variables-manageretl-pipeline-dagexit-intentexit-intent-newsletterexit-intent-offerexit-intent-surveyexit-interview-surveyfaq-01faq-categorized-tabsfaq-contact-sidebarfaq-searchable-accordion-workbenchfaq-two-columnfeature-accordion-mediafeature-alternating-rowsfeature-bento-ai-copilotfeature-code-preview-splitfeature-comparison-sliderfeature-drag-drop-organizerfeature-flags-managerfeature-full-bleed-rowsfeature-hover-tilt-cardsfeature-interactive-api-curl-builderfeature-interactive-tabsfeature-metric-growth-stepperfeature-scroll-spy-walkthroughfeature-segmented-comparefeature-sticky-media-scrollfeature-store-registryfeature-tabbed-deepdivefeature-vertical-tabs-panefeature-visual-changelog-difffeatures-01features-2x2-spotlightfeatures-checklist-splitfeatures-icon-list-densefeatures-numbered-gridfield-inspection-managerfine-tuning-job-monitorflash-sale-offer-barflashcard-study-deckfleet-vehicle-mapflight-radar-mapfloor-plan-explorerfooterfooter-brand-statementfooter-mega-newsletterfooter-sitemap-densefreelance-work-for-hire-contractfreight-quote-calculatorfrequently-bought-togethergift-card-balance-checkergithub-oss-traction-bandgraphql-query-explorerguardrails-safety-scannerhabit-streak-trackerheaderheader-announcement-stackherohero-01hero-3d-tilt-interactive-canvashero-bento-preview-gridhero-globe-interactive-nodeshero-saas-metrics-dashboardhero-split-device-mockuphero-typing-command-centerhero-video-modal-walkthroughhotel-booking-reservationhow-it-works-arrow-flowhow-it-works-before-afterhow-it-works-scroll-stepperhow-it-works-stepshow-it-works-tabbed-stepshow-it-works-timelineimmunization-historyimport-wizardinfluencer-campaign-cardinsurance-eligibility-checkerintegrations-connector-statusintegrations-directoryintegrations-featured-pairsintegrations-hub-diagramintegrations-logo-gridintegrations-search-directoryinventory-reorder-forecastinvite-membersinvoice-creator-wizardinvoices-listisochrone-reachability-mapkafka-stream-monitorkanban-task-boardknowledge-base-hublab-results-viewerlakehouse-table-optimizerlast-mile-courier-dispatchlead-capture-popupleaflet-asset-tracking-mapleaflet-delivery-tracking-mapleaflet-disaster-response-mapleaflet-fleet-vehicle-mapleaflet-flight-radar-mapleaflet-hub-locator-mapleaflet-isochrone-reachability-mapleaflet-last-mile-courier-dispatchleaflet-maritime-vessel-mapleaflet-neighborhood-walkscore-cardleaflet-property-boundary-mapleaflet-sales-territory-mapleaflet-store-locator-mapleaflet-threat-map-radarlease-agreement-signlegal-policy-pagelesson-video-playerllm-eval-benchmark-matrixloan-calculatorlogin-01logo-cloud-categorized-gridlogo-cloud-grayscalelogo-ticker-infinitelogosloyalty-rewards-tier-hubmaintenance-request-ticketmaritime-vessel-mapmatrix-swot-analysismcp-server-registry-managermedia-asset-gallerymeeting-agenda-notesmodel-token-cost-optimizermultimodal-vision-playgroundnda-agreement-generatorneighborhood-walkscore-cardnewsletternewsletter-inline-bandnewsletter-issue-archivenewsletter-signupnewsletter-split-previewnotification-centernotifications-popoveronboarding-equipment-provisioningonboarding-wizardorder-confirmationorder-management-pagepacking-slip-generatorparquet-metadata-inspectorpassword-generator-widgetpatient-intake-formpatient-medical-recordpayouts-management-tablepayroll-run-summarypeer-discussion-forumperformance-review-matrixpersonal-finance-budgetpodcast-audio-playerpomodoro-focus-timerprescription-refill-managerpress-kit-brand-assetsprice-drop-alert-cardpricingpricing-01pricing-calculatorpricing-enterprise-sla-cardpricing-feature-addon-builderpricing-feature-tier-sliderpricing-matrix-groupedpricing-matrix-plan-cardspricing-matrix-sticky-headerpricing-single-planpricing-tier-comparison-matrixpricing-usage-calculator-sliderprivacy-data-export-portalprivacy-policy-generatorproduct-comparison-drawerproduct-detail-pageproduct-grid-pageproduct-qa-communityproject-roadmapprompt-ab-testing-comparatorprompt-playgroundproperty-amenities-gridproperty-boundary-mapproperty-listing-cardpurchase-order-receivingquiz-assessment-runnerrag-pipeline-visualizerrate-limiting-configratings-award-wallratings-review-badgesratings-star-summaryrecord-detail-pagerecruitment-candidate-pipelinereferral-program-widgetresources-category-gridresources-featured-listresources-teaser-gridreturn-merchandise-inspectionreturns-portalreverse-etl-sync-managerroi-calculator-inputsrole-matrixsafe-note-calculatorsales-territory-mapsaved-cards-listschema-drift-alert-boardsearch-results-pagesecrets-rotation-schedulersecurity-compliance-badgessecurity-data-flowsecurity-incident-timelinesecurity-trust-center-gridseo-audit-checklistservice-health-matrixsession-device-managershipment-tracking-timelineshipping-label-printerskill-assessment-radarsmart-inbox-triagesocial-media-post-schedulersocial-proof-video-wallspark-job-stage-visualizersprint-timelinesql-query-notebooksso-identity-provider-configstats-bandstats-band-sparklinesstatus-monitoringsticky-ctasticky-cta-barsticky-cta-corner-buttonsticky-cta-reading-progressstock-transfer-managerstore-locator-mapstore-pickup-curbsidestream-processing-flink-topologystudent-gradebook-tablesubpoena-legal-hold-managersubscription-churn-analyticssupport-ticket-detailsynthetic-data-generatortax-summary-reportteam-sectiontechnical-specs-sheettelehealth-video-roomtenant-rent-ledgertestimonialtestimonial-marquee-scrolltestimonial-masonry-verified-gridtestimonial-quote-carousel-telemetrytestimonial-single-featuredtestimonial-social-cardstestimonials-01threat-map-radartime-off-portaltime-tracker-timesheettrademark-patent-portfoliotraining-compliance-trackertransaction-feedtriage-queue-dashboardusage-metering-dashboarduse-casesuse-cases-industry-griduse-cases-persona-tabsuse-cases-role-cardsuse-cases-scenario-walkthroughuser-profile-pageutm-campaign-buildervector-embeddings-inspectorvendor-supplier-portalvideo-playlist-sidebarvirtual-card-managervirtual-tour-panoramavitals-tracker-chartvulnerability-scanner-reportwaitlist-referral-positionwarehouse-inventory-gridwave-picking-consolewebhook-testerwebhookswholesale-b2b-quick-order
Files installed (3)
components/ui/badge/Badge.tsx0.8 kB
import * as React from 'react' import { Slot } from '@radix-ui/react-slot' import { cn } from '@/lib/utils' import { badgeVariants, type BadgeVariants } from './badge.variants' export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement>, BadgeVariants { /** Render the child element as the badge (e.g. an <a>) instead of a <span>. */ asChild?: boolean } const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>( ({ className, variant, wrap, asChild = false, ...props }, ref) => { const Comp = asChild ? Slot : 'span' return ( <Comp ref={ref} data-uipkge="" data-slot="badge" className={cn(badgeVariants({ variant, wrap }), className)} {...props} /> ) }, ) Badge.displayName = 'Badge' export { Badge }components/ui/badge/badge.variants.ts2.3 kB
import type { VariantProps } from 'class-variance-authority' import { cva } from 'class-variance-authority' /** * Variant definitions live in their own file (rather than the package * `index.ts`) so consuming Vue SFCs can import without creating a circular * dependency through the index. See card.variants.ts for the canonical * example + the SSR symptom that motivated the split. */ export const badgeVariants = cva( // text-overflow/ellipsis cannot apply to a flex container's anonymous text, // so truncation is opt-in via a child span (`<Badge><span class="truncate"> // …</span></Badge>`); min-w-0 lets that span shrink inside the flex root. 'inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit max-w-full whitespace-nowrap shrink-0 [&>svg]:size-3 [&>svg]:shrink-0 [&>span]:min-w-0 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors duration-200 overflow-hidden', { variants: { variant: { default: 'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90', secondary: 'border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90', destructive: 'border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60', outline: 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground', success: 'border-transparent bg-success/10 text-success dark:text-success [a&]:hover:bg-success/20', warning: 'border-transparent bg-warning/10 text-warning dark:text-warning [a&]:hover:bg-warning/20', info: 'border-transparent bg-info/10 text-info dark:text-info [a&]:hover:bg-info/20', }, // Allow multi-line labels. rounded-lg + extra leading keeps a wrapped // badge readable instead of a cramped two-line stadium pill. wrap: { true: 'whitespace-normal rounded-lg py-1 leading-snug', }, }, defaultVariants: { variant: 'default', }, }, ) export type BadgeVariants = VariantProps<typeof badgeVariants>components/ui/badge/index.ts0.1 kB
export { Badge, type BadgeProps } from './Badge' export { badgeVariants, type BadgeVariants } from './badge.variants'
Raw manifest:https://uipkge.dev/r/react/badge.json