metis-desk/modules/companies/src/web/components/dashboard-block.tsx

36 lines
790 B
TypeScript
Raw Normal View History

import type { ReactNode } from "react";
import { useTranslation } from "react-i18next";
type QueryState = { isPending: boolean; isError: boolean };
export function BlockState({
query,
empty,
emptyText,
children,
}: {
query: QueryState;
empty: boolean;
emptyText: string;
children: ReactNode;
}) {
const { t } = useTranslation("companies");
if (query.isPending) {
return (
<p className="py-6 text-sm text-muted-foreground" role="status">
{t("loading")}
</p>
);
}
if (query.isError) {
return (
<p className="py-6 text-sm text-destructive" role="alert">
{t("dashboard.blockError")}
</p>
);
}
if (empty) {
return <p className="py-6 text-sm text-muted-foreground">{emptyText}</p>;
}
return children;
}