diff --git a/src/components/nurui/badge-demo.tsx b/src/components/nurui/badge-demo.tsx
new file mode 100644
index 0000000..5c18222
--- /dev/null
+++ b/src/components/nurui/badge-demo.tsx
@@ -0,0 +1,18 @@
+// components/nurui/badge-demo.tsx
+import { Badge } from "@/components/nurui/badge";
+
+export function BadgeDemo({ className }: { className?: string }) {
+ return (
+
+ Primary
+ Secondary
+ Success
+ Danger
+ Warning
+ Info
+ Light
+ Dark
+ Outline
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/nurui/badge.tsx b/src/components/nurui/badge.tsx
new file mode 100644
index 0000000..5e00035
--- /dev/null
+++ b/src/components/nurui/badge.tsx
@@ -0,0 +1,38 @@
+// components/nurui/badge.tsx
+import * as React from "react";
+import { cva, type VariantProps } from "class-variance-authority";
+import { cn } from "@/lib/utils";
+
+const badgeVariants = cva(
+ "inline-flex items-center rounded-full px-3 py-1 text-sm font-medium transition-colors",
+ {
+ variants: {
+ variant: {
+ default: "bg-blue-100 text-blue-800 hover:bg-blue-200 dark:bg-blue-900 dark:text-blue-100",
+ secondary: "bg-gray-100 text-gray-800 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-100",
+ success: "bg-green-100 text-green-800 hover:bg-green-200 dark:bg-green-900 dark:text-green-100",
+ danger: "bg-red-100 text-red-800 hover:bg-red-200 dark:bg-red-900 dark:text-red-100",
+ warning: "bg-yellow-100 text-yellow-800 hover:bg-yellow-200 dark:bg-yellow-900 dark:text-yellow-100",
+ info: "bg-cyan-100 text-cyan-800 hover:bg-cyan-200 dark:bg-cyan-900 dark:text-cyan-100",
+ light: "bg-gray-50 text-gray-700 hover:bg-gray-100 dark:bg-gray-700 dark:text-gray-200",
+ dark: "bg-gray-900 text-gray-100 hover:bg-gray-800 dark:bg-gray-100 dark:text-gray-900",
+ outline: "border border-gray-300 text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ },
+ }
+);
+
+export interface BadgeProps
+ extends React.HTMLAttributes,
+ VariantProps {}
+
+function Badge({ className, variant, ...props }: BadgeProps) {
+ return (
+
+ );
+}
+
+export { Badge, badgeVariants };
\ No newline at end of file
diff --git a/src/components/pages/components/ComponentsPage.tsx b/src/components/pages/components/ComponentsPage.tsx
index 1a1371c..a8443a8 100644
--- a/src/components/pages/components/ComponentsPage.tsx
+++ b/src/components/pages/components/ComponentsPage.tsx
@@ -16,6 +16,7 @@ import { InfoCardDemo } from "@/components/nurui/info-card-demo";
import WaveCard from "@/components/nurui/wave-card";
import HackerBackground from "@/components/nurui/hacker-background";
import AnimatedListDemo from "@/components/nurui/animated-list-demo";
+import { BadgeDemo } from "@/components/nurui/badge-demo";
const ComponentsPage = () => {
return (
@@ -241,4 +242,16 @@ const featuresComponents = [
previewComponentName: "hacker-background",
background: ,
},
+ {
+ name: "Badge",
+ description: "Displays a badge or a component that looks like a badge.",
+ href: "/docs/badge",
+ previewComponentName: "badge",
+ className: "col-span-full md:col-span-2 xl:col-span-1",
+ background: (
+
+
+
+ ),
+ },
];
diff --git a/src/content/docs/badge.mdx b/src/content/docs/badge.mdx
new file mode 100644
index 0000000..6218fc1
--- /dev/null
+++ b/src/content/docs/badge.mdx
@@ -0,0 +1,68 @@
+---
+title: "Badge"
+description: "Displays a badge or a component that looks like a badge."
+---
+
+
+
+## Installation
+
+
+
+
+ CLI
+ Manual
+
+
+
+
+
+
+
+
+
+
+Install dependencies
+
+
+
+Add util file
+
+`lib/utils.ts`
+
+
+
+Copy and paste the following code into your project.
+
+`components/nurui/badge.tsx`
+
+
+
+Update the import paths to match your project setup.
+
+
+
+
+
+
+
+### Props
+
+| Prop | Type | Default | Description |
+| ----------- | -------- | ----------- | -------------------------------------------------------------- |
+| `variant` | `string` | `"default"` | The visual variant of the badge. Options: `default`, `secondary`, `success`, `danger`, `warning`, `info`, `light`, `dark`, `outline`. |
+| `className` | `string` | `""` | Additional custom classes for positioning or styling the badge.|
+
+### Variants
+
+| Variant | Description |
+| ----------- | ------------------------------ |
+| `default` | Primary badge with blue color |
+| `secondary` | Secondary badge with gray color|
+| `success` | Success badge with green color |
+| `danger` | Danger badge with red color |
+| `warning` | Warning badge with yellow color|
+| `info` | Info badge with cyan color |
+| `light` | Light badge with light gray |
+| `dark` | Dark badge with dark gray |
+| `outline` | Outlined badge with border |
\ No newline at end of file
diff --git a/src/registry/components-registry.tsx b/src/registry/components-registry.tsx
index 63c9fea..3cb3800 100644
--- a/src/registry/components-registry.tsx
+++ b/src/registry/components-registry.tsx
@@ -50,6 +50,7 @@ export const Index: Record = {
progressBar: createEntry("progress-bar", ["progress-bar"]),
banner: createEntry("banner", ["banner", "button"]),
terminal: createEntry("terminal", ["terminal"]),
+ badge: createEntry("badge", ["badge"]),
bannerCloseExample: createEntry("banner-close", [
"banner-close",
"banner",