@arolariu/components
Version:
🎨 70+ beautiful, accessible React components built on Radix UI. TypeScript-first, tree-shakeable, SSR-ready. Perfect for modern web apps, design systems & rapid prototyping. Zero config, maximum flexibility! ⚡
65 lines (64 loc) • 2.44 kB
JavaScript
"use client";
import { jsx } from "react/jsx-runtime";
import { cn } from "../../lib/utilities.js";
import { cva } from "class-variance-authority";
import "react";
function Empty({ className, ...props }) {
return /*#__PURE__*/ jsx("div", {
"data-slot": "empty",
className: cn("flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12", className),
...props
});
}
function EmptyHeader({ className, ...props }) {
return /*#__PURE__*/ jsx("div", {
"data-slot": "empty-header",
className: cn("flex max-w-sm flex-col items-center gap-2 text-center", className),
...props
});
}
const emptyMediaVariants = cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
variants: {
variant: {
default: "bg-transparent",
icon: "bg-neutral-100 text-neutral-950 flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6 dark:bg-neutral-800 dark:text-neutral-50"
}
},
defaultVariants: {
variant: "default"
}
});
function EmptyMedia({ className, variant = "default", ...props }) {
return /*#__PURE__*/ jsx("div", {
"data-slot": "empty-icon",
"data-variant": variant,
className: cn(emptyMediaVariants({
variant,
className
})),
...props
});
}
function EmptyTitle({ className, ...props }) {
return /*#__PURE__*/ jsx("div", {
"data-slot": "empty-title",
className: cn("text-lg font-medium tracking-tight", className),
...props
});
}
function EmptyDescription({ className, ...props }) {
return /*#__PURE__*/ jsx("div", {
"data-slot": "empty-description",
className: cn("text-sm/relaxed text-neutral-500 dark:text-neutral-400 [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-neutral-900 dark:[&>a:hover]:text-neutral-50", className),
...props
});
}
function EmptyContent({ className, ...props }) {
return /*#__PURE__*/ jsx("div", {
"data-slot": "empty-content",
className: cn("flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance", className),
...props
});
}
export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
//# sourceMappingURL=empty.js.map