summaryrefslogtreecommitdiff
path: root/lib/rfq-last/vendor/vendor-response-status-card.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rfq-last/vendor/vendor-response-status-card.tsx')
-rw-r--r--lib/rfq-last/vendor/vendor-response-status-card.tsx51
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/rfq-last/vendor/vendor-response-status-card.tsx b/lib/rfq-last/vendor/vendor-response-status-card.tsx
new file mode 100644
index 00000000..d4ef8dd3
--- /dev/null
+++ b/lib/rfq-last/vendor/vendor-response-status-card.tsx
@@ -0,0 +1,51 @@
+import { Card, CardContent } from "@/components/ui/card";
+import { LucideIcon } from "lucide-react";
+import { cn } from "@/lib/utils";
+
+interface VendorResponseStatusCardProps {
+ title: string;
+ count: number;
+ icon: LucideIcon;
+ variant?: "default" | "primary" | "secondary" | "success" | "warning" | "destructive";
+}
+
+const variantStyles = {
+ default: "border-gray-200 bg-gray-50/50",
+ primary: "border-blue-200 bg-blue-50/50",
+ secondary: "border-purple-200 bg-purple-50/50",
+ success: "border-green-200 bg-green-50/50",
+ warning: "border-yellow-200 bg-yellow-50/50",
+ destructive: "border-red-200 bg-red-50/50",
+};
+
+const iconStyles = {
+ default: "text-gray-600",
+ primary: "text-blue-600",
+ secondary: "text-purple-600",
+ success: "text-green-600",
+ warning: "text-yellow-600",
+ destructive: "text-red-600",
+};
+
+export function VendorResponseStatusCard({
+ title,
+ count,
+ icon: Icon,
+ variant = "default",
+}: VendorResponseStatusCardProps) {
+ return (
+ <Card className={cn("border", variantStyles[variant])}>
+ <CardContent className="p-4">
+ <div className="flex items-center justify-between">
+ <div className="space-y-1">
+ <p className="text-sm font-medium text-muted-foreground">{title}</p>
+ <p className="text-2xl font-bold">{count}</p>
+ </div>
+ <div className={cn("p-2 rounded-full bg-white/80", iconStyles[variant])}>
+ <Icon className="h-5 w-5" />
+ </div>
+ </div>
+ </CardContent>
+ </Card>
+ );
+} \ No newline at end of file