Vendaweb-portal/components/ui/empty.tsx

98 lines
2.1 KiB
TypeScript
Raw Normal View History

2026-01-08 12:09:16 +00:00
import * as React from "react";
import { cn } from "../../lib/utils";
const Empty = React.forwardRef<
HTMLDivElement,
React.HTMLAttributes<HTMLDivElement>
>(({ className, ...props }, ref) => (
<div
ref={ref}
className={cn(
"flex min-h-[400px] min-w-[600px] flex-col items-center justify-center rounded-2xl p-12 text-center w-full",
className
)}
{...props}
/>
));
Empty.displayName = "Empty";
const EmptyHeader = React.forwardRef<
HTMLDivElement,
React.HTMLAttributes<HTMLDivElement>
>(({ className, ...props }, ref) => (
<div
ref={ref}
className={cn("flex flex-col items-center space-y-4", className)}
{...props}
/>
));
EmptyHeader.displayName = "EmptyHeader";
const EmptyMedia = React.forwardRef<
HTMLDivElement,
React.HTMLAttributes<HTMLDivElement> & {
variant?: "default" | "icon";
}
>(({ className, variant = "default", ...props }, ref) => (
<div
ref={ref}
className={cn(
variant === "icon"
? "flex items-center justify-center"
: "mb-4",
className
)}
{...props}
/>
));
EmptyMedia.displayName = "EmptyMedia";
const EmptyTitle = React.forwardRef<
HTMLHeadingElement,
React.HTMLAttributes<HTMLHeadingElement>
>(({ className, ...props }, ref) => (
<h3
ref={ref}
className={cn("text-lg font-semibold text-slate-900", className)}
{...props}
/>
));
EmptyTitle.displayName = "EmptyTitle";
const EmptyDescription = React.forwardRef<
HTMLParagraphElement,
React.HTMLAttributes<HTMLParagraphElement>
>(({ className, ...props }, ref) => (
<p
ref={ref}
className={cn(
"max-w-sm text-sm text-slate-500",
className
)}
{...props}
/>
));
EmptyDescription.displayName = "EmptyDescription";
const EmptyContent = React.forwardRef<
HTMLDivElement,
React.HTMLAttributes<HTMLDivElement>
>(({ className, ...props }, ref) => (
<div
ref={ref}
className={cn("mt-6", className)}
{...props}
/>
));
EmptyContent.displayName = "EmptyContent";
export {
Empty,
EmptyHeader,
EmptyMedia,
EmptyTitle,
EmptyDescription,
EmptyContent,
};