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.

- -
-
- Empty Dashboard -
-
+ { + 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. +

+
+ {primaryButton?.text} +
+ +
+ +
+
+
+
+
+

+

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. +

+
+ {primaryButton?.text} +
+ +
+ +
+
+
+
+
+

+

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