* chore: removed viewer role * chore: indentation * chore: remove viewer role * chore: handled user permissions in store * chore: updated the migration file * chore: updated user permissions store * chore: removed the owner key * chore: code refactor * chore: code refactor * chore: code refactor * chore: code refactor * chore: code refactor * fix: build error * chore: updated user permissions store and handled the permissions fetch in workspace and project wrappers * chore: package user enum updated * chore: user permission updated * chore: user permission updated * chore: resolved build errors * chore: resolved build error * chore: resolved build errors * chore: computedFn deep map issue resolved * chore: added back migration * chore: added new field in project table * chore: removed member store in users * chore: private project for admins * chore: workspace notification access validation updated * fix: workspace member edit option * fix: project intake permission validation updated * chore: workspace export settings permission updated * chore: guest_view_all_issues added * chore: guest_view_all_issues added * chore: key changed for guest access * chore: added validation for individual issues * chore: changed the dashboard issues count * chore: added new yarn file * chore: modified yarn file * chore: project page permission updated * chore: project page permission updated * chore: member setting ux updated * chore: build error * fix: yarn lock * fix: build error --------- Co-authored-by: gurusainath <gurusainath007@gmail.com> Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
46 lines
1.7 KiB
TypeScript
46 lines
1.7 KiB
TypeScript
"use client";
|
|
|
|
import { observer } from "mobx-react";
|
|
import Image from "next/image";
|
|
// ui
|
|
import { Button } from "@plane/ui";
|
|
// hooks
|
|
import { useCommandPalette, useEventTracker, useUserPermissions } from "@/hooks/store";
|
|
import { EUserPermissions, EUserPermissionsLevel } from "@/plane-web/constants/user-permissions";
|
|
// assets
|
|
import ProjectEmptyStateImage from "@/public/empty-state/onboarding/dashboard-light.webp";
|
|
|
|
export const DashboardProjectEmptyState = observer(() => {
|
|
// store hooks
|
|
const { toggleCreateProjectModal } = useCommandPalette();
|
|
const { setTrackElement } = useEventTracker();
|
|
const { allowPermissions } = useUserPermissions();
|
|
|
|
// derived values
|
|
const canCreateProject = allowPermissions([EUserPermissions.ADMIN], EUserPermissionsLevel.WORKSPACE);
|
|
|
|
return (
|
|
<div className="mx-auto flex h-full flex-col justify-center space-y-4 lg:w-3/5">
|
|
<h4 className="text-xl font-semibold">Overview of your projects, activity, and metrics</h4>
|
|
<p className="text-custom-text-300">
|
|
Welcome to Plane, we are excited to have you here. Create your first project and track your issues, and this
|
|
page will transform into a space that helps you progress. Admins will also see items which help their team
|
|
progress.
|
|
</p>
|
|
<Image src={ProjectEmptyStateImage} className="w-full" alt="Project empty state" />
|
|
{canCreateProject && (
|
|
<div className="flex justify-center">
|
|
<Button
|
|
variant="primary"
|
|
onClick={() => {
|
|
setTrackElement("Project empty state");
|
|
toggleCreateProjectModal(true);
|
|
}}
|
|
>
|
|
Build your first project
|
|
</Button>
|
|
</div>
|
|
)}
|
|
</div>
|
|
);
|
|
});
|