diff --git a/web/components/page-views/workspace-dashboard.tsx b/web/components/page-views/workspace-dashboard.tsx
index be569c073..1e94da7d5 100644
--- a/web/components/page-views/workspace-dashboard.tsx
+++ b/web/components/page-views/workspace-dashboard.tsx
@@ -10,6 +10,7 @@ import { TourRoot } from "components/onboarding";
import { UserGreetingsView } from "components/user";
import { CompletedIssuesGraph, IssuesList, IssuesPieChart, IssuesStats } from "components/workspace";
import { Button } from "@plane/ui";
+import { DashboardScreenEmptyState } from "components/project/dashboard-empty-state";
// images
import emptyDashboard from "public/empty-state/dashboard.svg";
@@ -19,7 +20,12 @@ export const WorkspaceDashboardView = observer(() => {
const { workspaceSlug } = router.query;
// store
- const { user: userStore, project: projectStore, commandPalette: commandPaletteStore, trackEvent: { setTrackElement } } = useMobxStore();
+ const {
+ user: userStore,
+ project: projectStore,
+ commandPalette: commandPaletteStore,
+ trackEvent: { setTrackElement },
+ } = useMobxStore();
const user = userStore.currentUser;
const projects = workspaceSlug ? projectStore.projects[workspaceSlug.toString()] : null;
@@ -65,22 +71,15 @@ export const WorkspaceDashboardView = observer(() => {
) : (
-
-
-
Create a project
-
Manage your projects by creating issues, cycles, modules, views and pages.
-
{
- setTrackElement("DASHBOARD_PAGE");
- commandPaletteStore.toggleCreateProjectModal(true)
- }
- }>
- Create Project
-
-
-
-
-
-
+ {
+ setTrackElement("PROJECTS_EMPTY_STATE");
+ commandPaletteStore.toggleCreateProjectModal(true);
+ },
+ }}
+ />
)
) : null}
diff --git a/web/components/project/card-list.tsx b/web/components/project/card-list.tsx
index 2e9ade28f..ac4b0b8f0 100644
--- a/web/components/project/card-list.tsx
+++ b/web/components/project/card-list.tsx
@@ -5,6 +5,7 @@ import { useMobxStore } from "lib/mobx/store-provider";
// components
import { ProjectCard } from "components/project";
import { EmptyState } from "components/project/empty-state";
+import { ProjectScreenEmptyState } from "components/project/projects-screen-empty-state";
import { Loader } from "@plane/ui";
// images
import emptyProject from "public/empty-state/Project_full_screen.svg";
@@ -18,7 +19,11 @@ export interface IProjectCardList {
export const ProjectCardList: FC = observer((props) => {
const { workspaceSlug } = props;
// store
- const { project: projectStore, commandPalette: commandPaletteStore, trackEvent: { setTrackElement } } = useMobxStore();
+ const {
+ project: projectStore,
+ commandPalette: commandPaletteStore,
+ trackEvent: { setTrackElement },
+ } = useMobxStore();
const projects = workspaceSlug ? projectStore.projects[workspaceSlug.toString()] : null;
@@ -50,17 +55,13 @@ export const ProjectCardList: FC = observer((props) => {
)}
) : (
- ,
text: "Start something new",
onClick: () => {
setTrackElement("PROJECTS_EMPTY_STATE");
- commandPaletteStore.toggleCreateProjectModal(true)
- }
+ commandPaletteStore.toggleCreateProjectModal(true);
+ },
}}
/>
)}
diff --git a/web/components/project/dashboard-empty-state.tsx b/web/components/project/dashboard-empty-state.tsx
new file mode 100644
index 000000000..3b1f987f0
--- /dev/null
+++ b/web/components/project/dashboard-empty-state.tsx
@@ -0,0 +1,56 @@
+import React from "react";
+
+import Image from "next/image";
+import emptyProject from "public/empty-state/empty_project_dashboard.webp";
+
+// ui
+import { Button } from "@plane/ui";
+
+type Props = {
+ primaryButton: {
+ icon?: any;
+ text: string;
+ onClick: () => void;
+ };
+ disabled?: boolean;
+};
+
+export const DashboardScreenEmptyState: React.FC = ({ primaryButton, disabled = false }) => (
+
+
+
Overview of your projects, activity, and metrics
+
+ When you have created a project and have issues assigned, you will see metrics, activity, and things you care
+ about here. This is personalized to your role in projects, so project admins will see more than members.
+
+
+
+
+
+
+
+ Start your first project
+
+
+
+
+
+ Everything starts with a project in Plane
+
+ A project could be a product’s roadmap, a marketing campaign, or launching a new car.
+
+
+
+
+
+
+
+);
diff --git a/web/components/project/projects-screen-empty-state.tsx b/web/components/project/projects-screen-empty-state.tsx
new file mode 100644
index 000000000..cadb1c98b
--- /dev/null
+++ b/web/components/project/projects-screen-empty-state.tsx
@@ -0,0 +1,56 @@
+import React from "react";
+
+import Image from "next/image";
+import emptyProject from "public/empty-state/empty_project_projects_screen.webp";
+
+// ui
+import { Button } from "@plane/ui";
+
+type Props = {
+ primaryButton: {
+ icon?: any;
+ text: string;
+ onClick: () => void;
+ };
+ disabled?: boolean;
+};
+
+export const ProjectScreenEmptyState: React.FC = ({ primaryButton, disabled = false }) => (
+
+
+
Start a Project
+
+ Think of each project as the parent for goal-oriented work. Projects are where Jobs, Cycles, and Modules live
+ and, along with your colleagues, help you achieve that goal.
+
+
+
+
+
+
+
+ Start your first project
+
+
+
+
+
+ Everything starts with a project in Plane
+
+ A project could be a product’s roadmap, a marketing campaign, or launching a new car.
+
+
+
+
+
+
+
+);
diff --git a/web/public/empty-state/empty_project_dashboard.webp b/web/public/empty-state/empty_project_dashboard.webp
new file mode 100644
index 000000000..c1f633f6b
Binary files /dev/null and b/web/public/empty-state/empty_project_dashboard.webp differ
diff --git a/web/public/empty-state/empty_project_projects_screen.webp b/web/public/empty-state/empty_project_projects_screen.webp
new file mode 100644
index 000000000..ad66f0966
Binary files /dev/null and b/web/public/empty-state/empty_project_projects_screen.webp differ