UNPKG

@premieroctet/next-admin

Version:

Next-Admin provides a customizable and turnkey admin dashboard for applications built with Next.js and powered by the Prisma ORM. It aims to simplify the development process by providing a turnkey admin system that can be easily integrated into your proje

67 lines (66 loc) 3.2 kB
import { Fragment, jsx, jsxs } from "react/jsx-runtime"; import { PlusSmallIcon } from "@heroicons/react/24/outline"; import Link_mjs_default from "./common/Link.mjs"; import { useConfig } from "../context/ConfigContext.mjs"; import { useI18n } from "../context/I18nContext.mjs"; import { slugify } from "../utils/tools.mjs"; import ResourceIcon_mjs_default from "./common/ResourceIcon.mjs"; import { buttonVariants } from "./radix/Button.mjs"; const EmptyState_EmptyState = ({ resource, icon })=>{ const { t } = useI18n(); const { basePath, options } = useConfig(); const modelOptions = options?.model?.[resource]; const hasCreatePermission = !modelOptions?.permissions || modelOptions?.permissions?.includes("create"); const resourceName = t(`model.${resource}.name`, {}, modelOptions?.title ?? resource.toLowerCase()); return /*#__PURE__*/ jsxs("div", { className: "py-10 text-center", children: [ /*#__PURE__*/ jsx(ResourceIcon_mjs_default, { icon: icon ?? "RectangleGroupIcon", className: "text-nextadmin-content-default dark:text-dark-nextadmin-content-default mx-auto h-20 w-20 stroke-1" }), /*#__PURE__*/ jsx("h3", { className: "text-nextadmin-content-inverted dark:text-dark-nextadmin-content-default mt-2 text-lg font-semibold", children: t("list.empty.label", { resource: resourceName }) }), hasCreatePermission && /*#__PURE__*/ jsxs(Fragment, { children: [ /*#__PURE__*/ jsx("p", { className: "text-nextadmin-content-emphasis dark:text-dark-nextadmin-content-emphasis mt-1 text-sm", children: t("list.empty.caption", { resource: resourceName }) }), /*#__PURE__*/ jsx("div", { className: "mt-6", children: /*#__PURE__*/ jsxs(Link_mjs_default, { href: `${basePath}/${slugify(resource)}/new`, role: "button", className: buttonVariants({ variant: "default", size: "sm" }), children: [ /*#__PURE__*/ jsxs("span", { children: [ t("list.header.add.label"), " ", resourceName ] }), /*#__PURE__*/ jsx(PlusSmallIcon, { className: "ml-2 h-5 w-5", "aria-hidden": "true" }) ] }) }) ] }) ] }); }; const EmptyState = EmptyState_EmptyState; export { EmptyState as default };