forked from github/plane
061be85a5d
* fix: GET request changes * fix: filtering changes * feat: cycles and modules archive. * chore: disable fetching of cycle/ module details when clicked on the card in archives page. * chore: remove copy link button from archived modules/ cycles. * fix: archived cycle and module loading fliker issue. * chore: add validation to only archive completed cycles. * chore: add validation to only archive completed or cancelled module. * chore: archived issues/ cycles/ modules empty state update. --------- Co-authored-by: NarayanBavisetti <narayan3119@gmail.com> Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
590 lines
24 KiB
TypeScript
590 lines
24 KiB
TypeScript
import { EUserProjectRoles } from "./project";
|
||
import { EUserWorkspaceRoles } from "./workspace";
|
||
|
||
export interface EmptyStateDetails {
|
||
key: EmptyStateType;
|
||
title?: string;
|
||
description?: string;
|
||
path?: string;
|
||
primaryButton?: {
|
||
icon?: React.ReactNode;
|
||
text: string;
|
||
comicBox?: {
|
||
title?: string;
|
||
description?: string;
|
||
};
|
||
};
|
||
secondaryButton?: {
|
||
icon?: React.ReactNode;
|
||
text: string;
|
||
comicBox?: {
|
||
title?: string;
|
||
description?: string;
|
||
};
|
||
};
|
||
accessType?: "workspace" | "project";
|
||
access?: EUserWorkspaceRoles | EUserProjectRoles;
|
||
}
|
||
|
||
export enum EmptyStateType {
|
||
WORKSPACE_DASHBOARD = "workspace-dashboard",
|
||
WORKSPACE_ANALYTICS = "workspace-analytics",
|
||
WORKSPACE_PROJECTS = "workspace-projects",
|
||
WORKSPACE_ALL_ISSUES = "workspace-all-issues",
|
||
WORKSPACE_ASSIGNED = "workspace-assigned",
|
||
WORKSPACE_CREATED = "workspace-created",
|
||
WORKSPACE_SUBSCRIBED = "workspace-subscribed",
|
||
WORKSPACE_CUSTOM_VIEW = "workspace-custom-view",
|
||
WORKSPACE_NO_PROJECTS = "workspace-no-projects",
|
||
WORKSPACE_SETTINGS_API_TOKENS = "workspace-settings-api-tokens",
|
||
WORKSPACE_SETTINGS_WEBHOOKS = "workspace-settings-webhooks",
|
||
WORKSPACE_SETTINGS_EXPORT = "workspace-settings-export",
|
||
WORKSPACE_SETTINGS_IMPORT = "workspace-settings-import",
|
||
PROFILE_ASSIGNED = "profile-assigned",
|
||
PROFILE_CREATED = "profile-created",
|
||
PROFILE_SUBSCRIBED = "profile-subscribed",
|
||
PROJECT_SETTINGS_LABELS = "project-settings-labels",
|
||
PROJECT_SETTINGS_INTEGRATIONS = "project-settings-integrations",
|
||
PROJECT_SETTINGS_ESTIMATE = "project-settings-estimate",
|
||
PROJECT_CYCLES = "project-cycles",
|
||
PROJECT_CYCLE_NO_ISSUES = "project-cycle-no-issues",
|
||
PROJECT_CYCLE_ACTIVE = "project-cycle-active",
|
||
PROJECT_CYCLE_ALL = "project-cycle-all",
|
||
PROJECT_CYCLE_COMPLETED_NO_ISSUES = "project-cycle-completed-no-issues",
|
||
PROJECT_ARCHIVED_NO_CYCLES = "project-archived-no-cycles",
|
||
PROJECT_EMPTY_FILTER = "project-empty-filter",
|
||
PROJECT_ARCHIVED_EMPTY_FILTER = "project-archived-empty-filter",
|
||
PROJECT_DRAFT_EMPTY_FILTER = "project-draft-empty-filter",
|
||
PROJECT_NO_ISSUES = "project-no-issues",
|
||
PROJECT_ARCHIVED_NO_ISSUES = "project-archived-no-issues",
|
||
PROJECT_DRAFT_NO_ISSUES = "project-draft-no-issues",
|
||
VIEWS_EMPTY_SEARCH = "views-empty-search",
|
||
PROJECTS_EMPTY_SEARCH = "projects-empty-search",
|
||
MEMBERS_EMPTY_SEARCH = "members-empty-search",
|
||
PROJECT_MODULE_ISSUES = "project-module-issues",
|
||
PROJECT_MODULE = "project-module",
|
||
PROJECT_ARCHIVED_NO_MODULES = "project-archived-no-modules",
|
||
PROJECT_VIEW = "project-view",
|
||
PROJECT_PAGE = "project-page",
|
||
PROJECT_PAGE_ALL = "project-page-all",
|
||
PROJECT_PAGE_FAVORITES = "project-page-favorites",
|
||
PROJECT_PAGE_PRIVATE = "project-page-private",
|
||
PROJECT_PAGE_SHARED = "project-page-shared",
|
||
PROJECT_PAGE_ARCHIVED = "project-page-archived",
|
||
PROJECT_PAGE_RECENT = "project-page-recent",
|
||
|
||
COMMAND_K_SEARCH_EMPTY_STATE = "command-k-search-empty-state",
|
||
ISSUE_RELATION_SEARCH_EMPTY_STATE = "issue-relation-search-empty-state",
|
||
ISSUE_RELATION_EMPTY_STATE = "issue-relation-empty-state",
|
||
ISSUE_COMMENT_EMPTY_STATE = "issue-comment-empty-state",
|
||
|
||
NOTIFICATION_MY_ISSUE_EMPTY_STATE = "notification-my-issues-empty-state",
|
||
NOTIFICATION_CREATED_EMPTY_STATE = "notification-created-empty-state",
|
||
NOTIFICATION_SUBSCRIBED_EMPTY_STATE = "notification-subscribed-empty-state",
|
||
NOTIFICATION_ARCHIVED_EMPTY_STATE = "notification-archived-empty-state",
|
||
NOTIFICATION_SNOOZED_EMPTY_STATE = "notification-snoozed-empty-state",
|
||
NOTIFICATION_UNREAD_EMPTY_STATE = "notification-unread-empty-state",
|
||
}
|
||
|
||
const emptyStateDetails = {
|
||
// workspace
|
||
[EmptyStateType.WORKSPACE_DASHBOARD]: {
|
||
key: EmptyStateType.WORKSPACE_DASHBOARD,
|
||
title: "Overview of your projects, activity, and metrics",
|
||
description:
|
||
" 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.",
|
||
path: "/empty-state/onboarding/dashboard",
|
||
// path: "/empty-state/onboarding/",
|
||
primaryButton: {
|
||
text: "Build your first project",
|
||
comicBox: {
|
||
title: "Everything starts with a project in Plane",
|
||
description: "A project could be a product’s roadmap, a marketing campaign, or launching a new car.",
|
||
},
|
||
},
|
||
|
||
accessType: "workspace",
|
||
access: EUserWorkspaceRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.WORKSPACE_ANALYTICS]: {
|
||
key: EmptyStateType.WORKSPACE_ANALYTICS,
|
||
title: "Track progress, workloads, and allocations. Spot trends, remove blockers, and move work faster",
|
||
description:
|
||
"See scope versus demand, estimates, and scope creep. Get performance by team members and teams, and make sure your project runs on time.",
|
||
path: "/empty-state/onboarding/analytics",
|
||
primaryButton: {
|
||
text: "Create Cycles and Modules first",
|
||
comicBox: {
|
||
title: "Analytics works best with Cycles + Modules",
|
||
description:
|
||
"First, timebox your issues into Cycles and, if you can, group issues that span more than a cycle into Modules. Check out both on the left nav.",
|
||
},
|
||
},
|
||
accessType: "workspace",
|
||
access: EUserWorkspaceRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.WORKSPACE_PROJECTS]: {
|
||
key: EmptyStateType.WORKSPACE_PROJECTS,
|
||
title: "Start a Project",
|
||
description:
|
||
"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.",
|
||
path: "/empty-state/onboarding/projects",
|
||
primaryButton: {
|
||
text: "Start your first project",
|
||
comicBox: {
|
||
title: "Everything starts with a project in Plane",
|
||
description: "A project could be a product’s roadmap, a marketing campaign, or launching a new car.",
|
||
},
|
||
},
|
||
accessType: "workspace",
|
||
access: EUserWorkspaceRoles.MEMBER,
|
||
},
|
||
// all-issues
|
||
[EmptyStateType.WORKSPACE_ALL_ISSUES]: {
|
||
key: EmptyStateType.WORKSPACE_ALL_ISSUES,
|
||
title: "No issues in the project",
|
||
description: "First project done! Now, slice your work into trackable pieces with issues. Let's go!",
|
||
path: "/empty-state/all-issues/all-issues",
|
||
primaryButton: {
|
||
text: "Create new issue",
|
||
},
|
||
accessType: "workspace",
|
||
access: EUserWorkspaceRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.WORKSPACE_ASSIGNED]: {
|
||
key: EmptyStateType.WORKSPACE_ASSIGNED,
|
||
title: "No issues yet",
|
||
description: "Issues assigned to you can be tracked from here.",
|
||
path: "/empty-state/all-issues/assigned",
|
||
primaryButton: {
|
||
text: "Create new issue",
|
||
},
|
||
accessType: "workspace",
|
||
access: EUserWorkspaceRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.WORKSPACE_CREATED]: {
|
||
key: EmptyStateType.WORKSPACE_CREATED,
|
||
title: "No issues yet",
|
||
description: "All issues created by you come here, track them here directly.",
|
||
path: "/empty-state/all-issues/created",
|
||
primaryButton: {
|
||
text: "Create new issue",
|
||
},
|
||
accessType: "workspace",
|
||
access: EUserWorkspaceRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.WORKSPACE_SUBSCRIBED]: {
|
||
key: EmptyStateType.WORKSPACE_SUBSCRIBED,
|
||
title: "No issues yet",
|
||
description: "Subscribe to issues you are interested in, track all of them here.",
|
||
path: "/empty-state/all-issues/subscribed",
|
||
},
|
||
[EmptyStateType.WORKSPACE_CUSTOM_VIEW]: {
|
||
key: EmptyStateType.WORKSPACE_CUSTOM_VIEW,
|
||
title: "No issues yet",
|
||
description: "Issues that applies to the filters, track all of them here.",
|
||
path: "/empty-state/all-issues/custom-view",
|
||
},
|
||
[EmptyStateType.WORKSPACE_NO_PROJECTS]: {
|
||
key: EmptyStateType.WORKSPACE_NO_PROJECTS,
|
||
title: "No project",
|
||
description: "To create issues or manage your work, you need to create a project or be a part of one.",
|
||
path: "/empty-state/onboarding/projects",
|
||
primaryButton: {
|
||
text: "Start your first project",
|
||
comicBox: {
|
||
title: "Everything starts with a project in Plane",
|
||
description: "A project could be a product’s roadmap, a marketing campaign, or launching a new car.",
|
||
},
|
||
},
|
||
accessType: "workspace",
|
||
access: EUserWorkspaceRoles.MEMBER,
|
||
},
|
||
// workspace settings
|
||
[EmptyStateType.WORKSPACE_SETTINGS_API_TOKENS]: {
|
||
key: EmptyStateType.WORKSPACE_SETTINGS_API_TOKENS,
|
||
title: "No API tokens created",
|
||
description:
|
||
"Plane APIs can be used to integrate your data in Plane with any external system. Create a token to get started.",
|
||
path: "/empty-state/workspace-settings/api-tokens",
|
||
},
|
||
[EmptyStateType.WORKSPACE_SETTINGS_WEBHOOKS]: {
|
||
key: EmptyStateType.WORKSPACE_SETTINGS_WEBHOOKS,
|
||
title: "No webhooks added",
|
||
description: "Create webhooks to receive real-time updates and automate actions.",
|
||
path: "/empty-state/workspace-settings/webhooks",
|
||
},
|
||
[EmptyStateType.WORKSPACE_SETTINGS_EXPORT]: {
|
||
key: EmptyStateType.WORKSPACE_SETTINGS_EXPORT,
|
||
title: "No previous exports yet",
|
||
description: "Anytime you export, you will also have a copy here for reference.",
|
||
path: "/empty-state/workspace-settings/exports",
|
||
},
|
||
[EmptyStateType.WORKSPACE_SETTINGS_IMPORT]: {
|
||
key: EmptyStateType.WORKSPACE_SETTINGS_IMPORT,
|
||
title: "No previous imports yet",
|
||
description: "Find all your previous imports here and download them.",
|
||
path: "/empty-state/workspace-settings/imports",
|
||
},
|
||
// profile
|
||
[EmptyStateType.PROFILE_ASSIGNED]: {
|
||
key: EmptyStateType.PROFILE_ASSIGNED,
|
||
title: "No issues are assigned to you",
|
||
description: "Issues assigned to you can be tracked from here.",
|
||
path: "/empty-state/profile/assigned",
|
||
},
|
||
[EmptyStateType.PROFILE_CREATED]: {
|
||
key: EmptyStateType.PROFILE_CREATED,
|
||
title: "No issues yet",
|
||
description: "All issues created by you come here, track them here directly.",
|
||
path: "/empty-state/profile/created",
|
||
},
|
||
[EmptyStateType.PROFILE_SUBSCRIBED]: {
|
||
key: EmptyStateType.PROFILE_SUBSCRIBED,
|
||
title: "No issues yet",
|
||
description: "Subscribe to issues you are interested in, track all of them here.",
|
||
path: "/empty-state/profile/subscribed",
|
||
},
|
||
// project settings
|
||
[EmptyStateType.PROJECT_SETTINGS_LABELS]: {
|
||
key: EmptyStateType.PROJECT_SETTINGS_LABELS,
|
||
title: "No labels yet",
|
||
description: "Create labels to help organize and filter issues in you project.",
|
||
path: "/empty-state/project-settings/labels",
|
||
},
|
||
[EmptyStateType.PROJECT_SETTINGS_INTEGRATIONS]: {
|
||
key: EmptyStateType.PROJECT_SETTINGS_INTEGRATIONS,
|
||
title: "No integrations configured",
|
||
description: "Configure GitHub and other integrations to sync your project issues.",
|
||
path: "/empty-state/project-settings/integrations",
|
||
},
|
||
[EmptyStateType.PROJECT_SETTINGS_ESTIMATE]: {
|
||
key: EmptyStateType.PROJECT_SETTINGS_ESTIMATE,
|
||
title: "No estimates added",
|
||
description: "Create a set of estimates to communicate the amount of work per issue.",
|
||
path: "/empty-state/project-settings/estimates",
|
||
},
|
||
// project cycles
|
||
[EmptyStateType.PROJECT_CYCLES]: {
|
||
key: EmptyStateType.PROJECT_CYCLES,
|
||
title: "Group and timebox your work in Cycles.",
|
||
description:
|
||
"Break work down by timeboxed chunks, work backwards from your project deadline to set dates, and make tangible progress as a team.",
|
||
path: "/empty-state/onboarding/cycles",
|
||
primaryButton: {
|
||
text: "Set your first cycle",
|
||
comicBox: {
|
||
title: "Cycles are repetitive time-boxes.",
|
||
description:
|
||
"A sprint, an iteration, and or any other term you use for weekly or fortnightly tracking of work is a cycle.",
|
||
},
|
||
},
|
||
accessType: "workspace",
|
||
access: EUserWorkspaceRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.PROJECT_CYCLE_NO_ISSUES]: {
|
||
key: EmptyStateType.PROJECT_CYCLE_NO_ISSUES,
|
||
title: "No issues added to the cycle",
|
||
description: "Add or create issues you wish to timebox and deliver within this cycle",
|
||
path: "/empty-state/cycle-issues/",
|
||
primaryButton: {
|
||
text: "Create new issue ",
|
||
},
|
||
secondaryButton: {
|
||
text: "Add an existing issue",
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.PROJECT_CYCLE_ACTIVE]: {
|
||
key: EmptyStateType.PROJECT_CYCLE_ACTIVE,
|
||
title: "No active cycle",
|
||
description:
|
||
"An active cycle includes any period that encompasses today's date within its range. Find the progress and details of the active cycle here.",
|
||
path: "/empty-state/cycle/active",
|
||
},
|
||
[EmptyStateType.PROJECT_CYCLE_COMPLETED_NO_ISSUES]: {
|
||
key: EmptyStateType.PROJECT_CYCLE_COMPLETED_NO_ISSUES,
|
||
title: "No issues in the cycle",
|
||
description:
|
||
"No issues in the cycle. Issues are either transferred or hidden. To see hidden issues if any, update your display properties accordingly.",
|
||
path: "/empty-state/cycle/completed-no-issues",
|
||
},
|
||
[EmptyStateType.PROJECT_ARCHIVED_NO_CYCLES]: {
|
||
key: EmptyStateType.PROJECT_ARCHIVED_NO_CYCLES,
|
||
title: "No archived cycles yet",
|
||
description: "To tidy up your project, archive completed cycles. Find them here once archived.",
|
||
path: "/empty-state/archived/empty-cycles",
|
||
},
|
||
[EmptyStateType.PROJECT_CYCLE_ALL]: {
|
||
key: EmptyStateType.PROJECT_CYCLE_ALL,
|
||
title: "No cycles",
|
||
description:
|
||
"An active cycle includes any period that encompasses today's date within its range. Find the progress and details of the active cycle here.",
|
||
path: "/empty-state/cycle/active",
|
||
},
|
||
// empty filters
|
||
[EmptyStateType.PROJECT_EMPTY_FILTER]: {
|
||
key: EmptyStateType.PROJECT_EMPTY_FILTER,
|
||
title: "No issues found matching the filters applied",
|
||
path: "/empty-state/empty-filters/",
|
||
secondaryButton: {
|
||
text: "Clear all filters",
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.PROJECT_ARCHIVED_EMPTY_FILTER]: {
|
||
key: EmptyStateType.PROJECT_ARCHIVED_EMPTY_FILTER,
|
||
title: "No issues found matching the filters applied",
|
||
path: "/empty-state/empty-filters/",
|
||
secondaryButton: {
|
||
text: "Clear all filters",
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.PROJECT_DRAFT_EMPTY_FILTER]: {
|
||
key: EmptyStateType.PROJECT_DRAFT_EMPTY_FILTER,
|
||
title: "No issues found matching the filters applied",
|
||
path: "/empty-state/empty-filters/",
|
||
secondaryButton: {
|
||
text: "Clear all filters",
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
// project issues
|
||
[EmptyStateType.PROJECT_NO_ISSUES]: {
|
||
key: EmptyStateType.PROJECT_NO_ISSUES,
|
||
title: "Create an issue and assign it to someone, even yourself",
|
||
description:
|
||
"Think of issues as jobs, tasks, work, or JTBD. Which we like. An issue and its sub-issues are usually time-based actionables assigned to members of your team. Your team creates, assigns, and completes issues to move your project towards its goal.",
|
||
path: "/empty-state/onboarding/issues",
|
||
primaryButton: {
|
||
text: "Create your first issue",
|
||
comicBox: {
|
||
title: "Issues are building blocks in Plane.",
|
||
description:
|
||
"Redesign the Plane UI, Rebrand the company, or Launch the new fuel injection system are examples of issues that likely have sub-issues.",
|
||
},
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.PROJECT_ARCHIVED_NO_ISSUES]: {
|
||
key: EmptyStateType.PROJECT_ARCHIVED_NO_ISSUES,
|
||
title: "No archived issues yet",
|
||
description:
|
||
"Manually or through automation, you can archive issues that are completed or cancelled. Find them here once archived.",
|
||
path: "/empty-state/archived/empty-issues",
|
||
primaryButton: {
|
||
text: "Set automation",
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.PROJECT_DRAFT_NO_ISSUES]: {
|
||
key: EmptyStateType.PROJECT_DRAFT_NO_ISSUES,
|
||
title: "No draft issues yet",
|
||
description:
|
||
"Quickly stepping away but want to keep your place? No worries – save a draft now. Your issues will be right here waiting for you.",
|
||
path: "/empty-state/draft/draft-issues-empty",
|
||
},
|
||
[EmptyStateType.VIEWS_EMPTY_SEARCH]: {
|
||
key: EmptyStateType.VIEWS_EMPTY_SEARCH,
|
||
title: "No matching views",
|
||
description: "No views match the search criteria. Create a new view instead.",
|
||
path: "/empty-state/search/search",
|
||
},
|
||
[EmptyStateType.PROJECTS_EMPTY_SEARCH]: {
|
||
key: EmptyStateType.PROJECTS_EMPTY_SEARCH,
|
||
title: "No matching projects",
|
||
description: "No projects detected with the matching criteria. Create a new project instead.",
|
||
path: "/empty-state/search/project",
|
||
},
|
||
[EmptyStateType.MEMBERS_EMPTY_SEARCH]: {
|
||
key: EmptyStateType.MEMBERS_EMPTY_SEARCH,
|
||
title: "No matching members",
|
||
description: "Add them to the project if they are already a part of the workspace",
|
||
path: "/empty-state/search/member",
|
||
},
|
||
// project module
|
||
[EmptyStateType.PROJECT_MODULE_ISSUES]: {
|
||
key: EmptyStateType.PROJECT_MODULE_ISSUES,
|
||
title: "No issues in the module",
|
||
description: "Create or add issues which you want to accomplish as part of this module",
|
||
path: "/empty-state/module-issues/",
|
||
primaryButton: {
|
||
text: "Create new issue ",
|
||
},
|
||
secondaryButton: {
|
||
text: "Add an existing issue",
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.PROJECT_MODULE]: {
|
||
key: EmptyStateType.PROJECT_MODULE,
|
||
title: "Map your project milestones to Modules and track aggregated work easily.",
|
||
description:
|
||
"A group of issues that belong to a logical, hierarchical parent form a module. Think of them as a way to track work by project milestones. They have their own periods and deadlines as well as analytics to help you see how close or far you are from a milestone.",
|
||
path: "/empty-state/onboarding/modules",
|
||
primaryButton: {
|
||
text: "Build your first module",
|
||
comicBox: {
|
||
title: "Modules help group work by hierarchy.",
|
||
description: "A cart module, a chassis module, and a warehouse module are all good example of this grouping.",
|
||
},
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.PROJECT_ARCHIVED_NO_MODULES]: {
|
||
key: EmptyStateType.PROJECT_ARCHIVED_NO_MODULES,
|
||
title: "No archived Modules yet",
|
||
description: "To tidy up your project, archive completed or cancelled modules. Find them here once archived.",
|
||
path: "/empty-state/archived/empty-modules",
|
||
},
|
||
// project views
|
||
[EmptyStateType.PROJECT_VIEW]: {
|
||
key: EmptyStateType.PROJECT_VIEW,
|
||
title: "Save filtered views for your project. Create as many as you need",
|
||
description:
|
||
"Views are a set of saved filters that you use frequently or want easy access to. All your colleagues in a project can see everyone’s views and choose whichever suits their needs best.",
|
||
path: "/empty-state/onboarding/views",
|
||
primaryButton: {
|
||
text: "Create your first view",
|
||
comicBox: {
|
||
title: "Views work atop Issue properties.",
|
||
description: "You can create a view from here with as many properties as filters as you see fit.",
|
||
},
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
// project pages
|
||
[EmptyStateType.PROJECT_PAGE]: {
|
||
key: EmptyStateType.PROJECT_PAGE,
|
||
title: "Write a note, a doc, or a full knowledge base. Get Galileo, Plane’s AI assistant, to help you get started",
|
||
description:
|
||
"Pages are thoughts potting space in Plane. Take down meeting notes, format them easily, embed issues, lay them out using a library of components, and keep them all in your project’s context. To make short work of any doc, invoke Galileo, Plane’s AI, with a shortcut or the click of a button.",
|
||
path: "/empty-state/onboarding/pages",
|
||
primaryButton: {
|
||
text: "Create your first page",
|
||
comicBox: {
|
||
title: "A page can be a doc or a doc of docs.",
|
||
description:
|
||
"We wrote Nikhil and Meera’s love story. You could write your project’s mission, goals, and eventual vision.",
|
||
},
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
[EmptyStateType.PROJECT_PAGE_ALL]: {
|
||
key: EmptyStateType.PROJECT_PAGE_ALL,
|
||
title: "Write a note, a doc, or a full knowledge base",
|
||
description:
|
||
"Pages help you organise your thoughts to create wikis, discussions or even document heated takes for your project. Use it wisely!",
|
||
path: "/empty-state/pages/all",
|
||
},
|
||
[EmptyStateType.PROJECT_PAGE_FAVORITES]: {
|
||
key: EmptyStateType.PROJECT_PAGE_FAVORITES,
|
||
title: "No favorite pages yet",
|
||
description: "Favorites for quick access? mark them and find them right here.",
|
||
path: "/empty-state/pages/favorites",
|
||
},
|
||
[EmptyStateType.PROJECT_PAGE_PRIVATE]: {
|
||
key: EmptyStateType.PROJECT_PAGE_PRIVATE,
|
||
title: "No private pages yet",
|
||
description: "Keep your private thoughts here. When you're ready to share, the team's just a click away.",
|
||
path: "/empty-state/pages/private",
|
||
},
|
||
[EmptyStateType.PROJECT_PAGE_SHARED]: {
|
||
key: EmptyStateType.PROJECT_PAGE_SHARED,
|
||
title: "No shared pages yet",
|
||
description: "See pages shared with everyone in your project right here.",
|
||
path: "/empty-state/pages/shared",
|
||
},
|
||
[EmptyStateType.PROJECT_PAGE_ARCHIVED]: {
|
||
key: EmptyStateType.PROJECT_PAGE_ARCHIVED,
|
||
title: "No archived pages yet",
|
||
description: "Archive pages not on your radar. Access them here when needed.",
|
||
path: "/empty-state/pages/archived",
|
||
},
|
||
[EmptyStateType.PROJECT_PAGE_RECENT]: {
|
||
key: EmptyStateType.PROJECT_PAGE_RECENT,
|
||
title: "Write a note, a doc, or a full knowledge base",
|
||
description:
|
||
"Pages help you organise your thoughts to create wikis, discussions or even document heated takes for your project. Use it wisely! Pages will be sorted and grouped by last updated",
|
||
path: "/empty-state/pages/recent",
|
||
primaryButton: {
|
||
text: "Create new page",
|
||
},
|
||
accessType: "project",
|
||
access: EUserProjectRoles.MEMBER,
|
||
},
|
||
|
||
[EmptyStateType.COMMAND_K_SEARCH_EMPTY_STATE]: {
|
||
key: EmptyStateType.COMMAND_K_SEARCH_EMPTY_STATE,
|
||
title: "No results found",
|
||
path: "/empty-state/search/search",
|
||
},
|
||
[EmptyStateType.ISSUE_RELATION_SEARCH_EMPTY_STATE]: {
|
||
key: EmptyStateType.ISSUE_RELATION_SEARCH_EMPTY_STATE,
|
||
title: "No maching issues found",
|
||
path: "/empty-state/search/search",
|
||
},
|
||
[EmptyStateType.ISSUE_RELATION_EMPTY_STATE]: {
|
||
key: EmptyStateType.ISSUE_RELATION_EMPTY_STATE,
|
||
title: "No issues found",
|
||
path: "/empty-state/search/issues",
|
||
},
|
||
[EmptyStateType.ISSUE_COMMENT_EMPTY_STATE]: {
|
||
key: EmptyStateType.ISSUE_COMMENT_EMPTY_STATE,
|
||
title: "No comments yet",
|
||
description: "Comments can be used as a discussion and follow-up space for the issues",
|
||
path: "/empty-state/search/comments",
|
||
},
|
||
|
||
[EmptyStateType.NOTIFICATION_MY_ISSUE_EMPTY_STATE]: {
|
||
key: EmptyStateType.NOTIFICATION_MY_ISSUE_EMPTY_STATE,
|
||
title: "No issues assigned",
|
||
description: "Updates for issues assigned to you can be \n seen here",
|
||
path: "/empty-state/search/notification",
|
||
},
|
||
|
||
[EmptyStateType.NOTIFICATION_CREATED_EMPTY_STATE]: {
|
||
key: EmptyStateType.NOTIFICATION_CREATED_EMPTY_STATE,
|
||
title: "No updates to issues",
|
||
description: "Updates to issues created by you can be \n seen here",
|
||
path: "/empty-state/search/notification",
|
||
},
|
||
[EmptyStateType.NOTIFICATION_SUBSCRIBED_EMPTY_STATE]: {
|
||
key: EmptyStateType.NOTIFICATION_SUBSCRIBED_EMPTY_STATE,
|
||
title: "No updates to issues",
|
||
description: "Updates to any issue you are \n subscribed to can be seen here",
|
||
path: "/empty-state/search/notification",
|
||
},
|
||
[EmptyStateType.NOTIFICATION_UNREAD_EMPTY_STATE]: {
|
||
key: EmptyStateType.NOTIFICATION_UNREAD_EMPTY_STATE,
|
||
title: "No unread notifications",
|
||
description: "Congratulations, you are up-to-date \n with everything happening in the issues \n you care about",
|
||
path: "/empty-state/search/notification",
|
||
},
|
||
[EmptyStateType.NOTIFICATION_SNOOZED_EMPTY_STATE]: {
|
||
key: EmptyStateType.NOTIFICATION_SNOOZED_EMPTY_STATE,
|
||
title: "No snoozed notifications yet",
|
||
description: "Any notification you snooze for later will \n be available here to act upon",
|
||
path: "/empty-state/search/snooze",
|
||
},
|
||
[EmptyStateType.NOTIFICATION_ARCHIVED_EMPTY_STATE]: {
|
||
key: EmptyStateType.NOTIFICATION_ARCHIVED_EMPTY_STATE,
|
||
title: "No archived notifications yet",
|
||
description: "Any notification you archive will be \n available here to help you focus",
|
||
path: "/empty-state/search/archive",
|
||
},
|
||
} as const;
|
||
|
||
export const EMPTY_STATE_DETAILS: Record<EmptyStateType, EmptyStateDetails> = emptyStateDetails;
|