forked from github/plane
45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
import { observer } from "mobx-react-lite";
|
|
import { PlusIcon } from "lucide-react";
|
|
// components
|
|
import { EmptyState } from "@/components/common";
|
|
// constants
|
|
import { EIssuesStoreType } from "@/constants/issue";
|
|
import { EUserProjectRoles } from "@/constants/project";
|
|
// hooks
|
|
import { useApplication, useEventTracker, useUser } from "@/hooks/store";
|
|
// assets
|
|
import emptyIssue from "public/empty-state/issue.svg";
|
|
|
|
export const ProjectViewEmptyState: React.FC = observer(() => {
|
|
// store hooks
|
|
const { commandPalette: commandPaletteStore } = useApplication();
|
|
const { setTrackElement } = useEventTracker();
|
|
const {
|
|
membership: { currentProjectRole },
|
|
} = useUser();
|
|
// auth
|
|
const isCreatingIssueAllowed = !!currentProjectRole && currentProjectRole >= EUserProjectRoles.MEMBER;
|
|
|
|
return (
|
|
<div className="grid h-full w-full place-items-center">
|
|
<EmptyState
|
|
title="View issues will appear here"
|
|
description="Issues help you track individual pieces of work. With Issues, keep track of what's going on, who is working on it, and what's done."
|
|
image={emptyIssue}
|
|
primaryButton={
|
|
isCreatingIssueAllowed
|
|
? {
|
|
text: "New issue",
|
|
icon: <PlusIcon className="h-3 w-3" strokeWidth={2} />,
|
|
onClick: () => {
|
|
setTrackElement("View issue empty state");
|
|
commandPaletteStore.toggleCreateIssueModal(true, EIssuesStoreType.PROJECT_VIEW);
|
|
},
|
|
}
|
|
: undefined
|
|
}
|
|
/>
|
|
</div>
|
|
);
|
|
});
|