"use client";
import { cn } from "@/lib/utils";
export function Tabs({
items,
value,
onChange,
className,
}: {
items: { id: string; label: string }[];
value: string;
onChange: (id: string) => void;
className?: string;
}) {
return (
{items.map((item) => {
const active = item.id === value;
return (
);
})}
);
}
export function TableToolbar({
search,
onSearchChange,
searchPlaceholder = "جستجو…",
actions,
className,
}: {
search?: string;
onSearchChange?: (v: string) => void;
searchPlaceholder?: string;
actions?: React.ReactNode;
className?: string;
}) {
return (
{onSearchChange ? (
onSearchChange(e.target.value)}
placeholder={searchPlaceholder}
className="h-10 w-full max-w-sm rounded-xl border border-[var(--border)] bg-[var(--surface)] px-3 text-sm"
/>
) : (
)}
{actions ?
{actions}
: null}
);
}
export function Breadcrumbs({
items,
}: {
items: { label: string; href?: string }[];
}) {
return (
);
}
export function Skeleton({ className }: { className?: string }) {
return ;
}
export function Pagination({
page,
pageSize,
total,
onPageChange,
}: {
page: number;
pageSize: number;
total: number;
onPageChange: (page: number) => void;
}) {
const pages = Math.max(1, Math.ceil(total / pageSize));
if (pages <= 1) return null;
return (
صفحه {page} از {pages}
);
}