import { EUserPermissions } from "ee/constants/user-permissions";
import { Plus, Shapes } from "lucide-react";

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?: any;
}

export enum EmptyStateType {
  WORKSPACE_DASHBOARD = "workspace-dashboard",
  WORKSPACE_ANALYTICS = "workspace-analytics",
  WORKSPACE_PROJECTS = "workspace-projects",
  WORKSPACE_TEAMS = "workspace-teams",
  WORKSPACE_INITIATIVES = "workspace-initiatives",
  WORKSPACE_INITIATIVES_EMPTY_SEARCH = "workspace-initiatives-empty-search",
  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_PROJECT_NOT_FOUND = "workspace-project-not-found",
  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_ACTIVITY = "profile-activity",
  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_PRIVATE = "project-page-private",
  PROJECT_PAGE_PUBLIC = "project-page-public",
  PROJECT_PAGE_ARCHIVED = "project-page-archived",
  WORKSPACE_PAGE = "workspace-page",
  WORKSPACE_PAGE_PRIVATE = "workspace-page-private",
  WORKSPACE_PAGE_PUBLIC = "workspace-page-public",
  WORKSPACE_PAGE_ARCHIVED = "workspace-page-archived",

  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",

  EPIC_RELATION_SEARCH_EMPTY_STATE = "epic-relation-search-empty-state",
  EPIC_RELATION_EMPTY_STATE = "epic-relation-empty-state",

  NOTIFICATION_DETAIL_EMPTY_STATE = "notification-detail-empty-state",
  NOTIFICATION_ALL_EMPTY_STATE = "notification-all-empty-state",
  NOTIFICATION_MENTIONS_EMPTY_STATE = "notification-mentions-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",

  ACTIVE_CYCLE_PROGRESS_EMPTY_STATE = "active-cycle-progress-empty-state",
  ACTIVE_CYCLE_CHART_EMPTY_STATE = "active-cycle-chart-empty-state",
  ACTIVE_CYCLE_PRIORITY_ISSUE_EMPTY_STATE = "active-cycle-priority-issue-empty-state",
  ACTIVE_CYCLE_ASSIGNEE_EMPTY_STATE = "active-cycle-assignee-empty-state",
  ACTIVE_CYCLE_LABEL_EMPTY_STATE = "active-cycle-label-empty-state",

  WORKSPACE_ACTIVE_CYCLES = "workspace-active-cycles",
  DISABLED_PROJECT_INBOX = "disabled-project-inbox",
  DISABLED_PROJECT_CYCLE = "disabled-project-cycle",
  DISABLED_PROJECT_MODULE = "disabled-project-module",
  DISABLED_PROJECT_VIEW = "disabled-project-view",
  DISABLED_PROJECT_PAGE = "disabled-project-page",

  INBOX_SIDEBAR_OPEN_TAB = "inbox-sidebar-open-tab",
  INBOX_SIDEBAR_CLOSED_TAB = "inbox-sidebar-closed-tab",
  INBOX_SIDEBAR_FILTER_EMPTY_STATE = "inbox-sidebar-filter-empty-state",
  INBOX_DETAIL_EMPTY_STATE = "inbox-detail-empty-state",

  WORKSPACE_DRAFT_ISSUES = "workspace-draft-issues",

  PROJECT_NO_EPICS = "project-no-epics",
  // Teams
  TEAM_NO_ISSUES = "team-no-issues",
  TEAM_EMPTY_FILTER = "team-empty-filter",
  TEAM_VIEW = "team-view",
  TEAM_PAGE = "team-page",
  // stickies
  STICKIES = "stickies",
  STICKIES_SEARCH = "stickies-search",
  // home widgets
  HOME_WIDGETS = "home-widgets",
}

const emptyStateDetails: Record<EmptyStateType, 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: [EUserPermissions.ADMIN, EUserPermissions.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: "Start your first project",
      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: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.WORKSPACE_PROJECTS]: {
    key: EmptyStateType.WORKSPACE_PROJECTS,
    title: "No active projects",
    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. Create a new project or filter for archived projects.",
    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: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.WORKSPACE_TEAMS]: {
    key: EmptyStateType.WORKSPACE_TEAMS,
    title: "Teams",
    description: "Teams are groups of people who collaborate on projects. Create a team to get started.",
    path: "/empty-state/teams/teams",
    primaryButton: {
      text: "Create new team",
    },
    accessType: "workspace",
    access: [EUserPermissions.ADMIN],
  },
  [EmptyStateType.WORKSPACE_INITIATIVES]: {
    key: EmptyStateType.WORKSPACE_INITIATIVES,
    title: "Organize work at the highest level with Initiatives",
    description:
      "When you need to organize work spanning several projects and teams, Initiatives come in handy. Connect projects and epics to initiatives, see automatically rolled up updates, and see the forests before you get to the trees.",
    path: "/empty-state/initiatives/initiatives",
    primaryButton: {
      text: "Create an initiative",
    },
    accessType: "workspace",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.WORKSPACE_INITIATIVES_EMPTY_SEARCH]: {
    key: EmptyStateType.WORKSPACE_INITIATIVES_EMPTY_SEARCH,
    title: "No matching initiatives",
    description: "No initiatives detected with the matching criteria. \n Create a new initiative instead.",
    path: "/empty-state/search/project",
  },
  // 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: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.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_PROJECT_NOT_FOUND]: {
    key: EmptyStateType.WORKSPACE_PROJECT_NOT_FOUND,
    title: "No such project exists",
    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: "Create 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: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [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: [EUserPermissions.ADMIN, EUserPermissions.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_ACTIVITY]: {
    key: EmptyStateType.PROFILE_ASSIGNED,
    title: "No activities yet",
    description:
      "Get started by creating a new issue! Add details and properties to it. Explore more in Plane to see your activity.",
    path: "/empty-state/profile/activity",
  },
  [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: "project",
    access: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.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. \n Create a new view instead.",
    path: "/empty-state/search/views",
  },
  [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: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.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: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
  },
  // 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",
    },
    accessType: "project",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [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",
    primaryButton: {
      text: "Create your first page",
    },
    accessType: "project",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.PROJECT_PAGE_PUBLIC]: {
    key: EmptyStateType.PROJECT_PAGE_PUBLIC,
    title: "No public pages yet",
    description: "See pages shared with everyone in your project right here.",
    path: "/empty-state/pages/public",
    primaryButton: {
      text: "Create your first page",
    },
    accessType: "project",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [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.WORKSPACE_PAGE]: {
    key: EmptyStateType.WORKSPACE_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",
    },
    accessType: "workspace",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.WORKSPACE_PAGE_PRIVATE]: {
    key: EmptyStateType.WORKSPACE_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",
    primaryButton: {
      text: "Create your first page",
    },
    accessType: "workspace",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.WORKSPACE_PAGE_PUBLIC]: {
    key: EmptyStateType.WORKSPACE_PAGE_PUBLIC,
    title: "No public pages yet",
    description: "See pages shared with everyone in your workspace right here.",
    path: "/empty-state/pages/public",
    primaryButton: {
      text: "Create your first page",
    },
    accessType: "workspace",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.WORKSPACE_PAGE_ARCHIVED]: {
    key: EmptyStateType.WORKSPACE_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.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 matching 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.EPIC_RELATION_SEARCH_EMPTY_STATE]: {
    key: EmptyStateType.EPIC_RELATION_SEARCH_EMPTY_STATE,
    title: "No matching epics found",
    path: "/empty-state/search/search",
  },
  [EmptyStateType.EPIC_RELATION_EMPTY_STATE]: {
    key: EmptyStateType.EPIC_RELATION_EMPTY_STATE,
    title: "No epics 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 \n follow-up space for the issues",
    path: "/empty-state/search/comments",
  },

  [EmptyStateType.NOTIFICATION_DETAIL_EMPTY_STATE]: {
    key: EmptyStateType.INBOX_DETAIL_EMPTY_STATE,
    title: "Select to view details.",
    path: "/empty-state/intake/issue-detail",
  },
  [EmptyStateType.NOTIFICATION_ALL_EMPTY_STATE]: {
    key: EmptyStateType.NOTIFICATION_ALL_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_MENTIONS_EMPTY_STATE]: {
    key: EmptyStateType.NOTIFICATION_MENTIONS_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_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",
  },

  [EmptyStateType.ACTIVE_CYCLE_PROGRESS_EMPTY_STATE]: {
    key: EmptyStateType.ACTIVE_CYCLE_PROGRESS_EMPTY_STATE,
    title: "Add issues to the cycle to view it's \n progress",
    path: "/empty-state/active-cycle/progress",
  },
  [EmptyStateType.ACTIVE_CYCLE_CHART_EMPTY_STATE]: {
    key: EmptyStateType.ACTIVE_CYCLE_CHART_EMPTY_STATE,
    title: "Add issues to the cycle to view the \n burndown chart.",
    path: "/empty-state/active-cycle/chart",
  },
  [EmptyStateType.ACTIVE_CYCLE_PRIORITY_ISSUE_EMPTY_STATE]: {
    key: EmptyStateType.ACTIVE_CYCLE_PRIORITY_ISSUE_EMPTY_STATE,
    title: "Observe high priority issues tackled in \n the cycle at a glance.",
    path: "/empty-state/active-cycle/priority",
  },
  [EmptyStateType.ACTIVE_CYCLE_ASSIGNEE_EMPTY_STATE]: {
    key: EmptyStateType.ACTIVE_CYCLE_ASSIGNEE_EMPTY_STATE,
    title: "Add assignees to issues to see a \n breakdown of work by assignees.",
    path: "/empty-state/active-cycle/assignee",
  },
  [EmptyStateType.ACTIVE_CYCLE_LABEL_EMPTY_STATE]: {
    key: EmptyStateType.ACTIVE_CYCLE_LABEL_EMPTY_STATE,
    title: "Add labels to issues to see the \n breakdown of work by labels.",
    path: "/empty-state/active-cycle/label",
  },
  [EmptyStateType.WORKSPACE_ACTIVE_CYCLES]: {
    key: EmptyStateType.WORKSPACE_ACTIVE_CYCLES,
    title: "No active cycles",
    description:
      "Cycles of your projects that includes any period that encompasses today's date within its range. Find the progress and details of all your active cycle here.",
    path: "/empty-state/onboarding/workspace-active-cycles",
  },
  [EmptyStateType.DISABLED_PROJECT_INBOX]: {
    key: EmptyStateType.DISABLED_PROJECT_INBOX,
    title: "Intake is not enabled for the project.",
    description:
      "Intake helps you manage incoming requests to your project and add them as issues in your workflow. Enable intake \n from project settings to manage requests.",
    accessType: "project",
    access: [EUserPermissions.ADMIN],
    path: "/empty-state/disabled-feature/intake",
    primaryButton: {
      text: "Manage features",
    },
  },
  [EmptyStateType.DISABLED_PROJECT_CYCLE]: {
    key: EmptyStateType.DISABLED_PROJECT_CYCLE,
    title: "Cycles is not enabled for this project.",
    description:
      "Break work down by timeboxed chunks, work backwards from your project deadline to set dates, and make tangible progress as a team. Enable the cycles feature for your project to start using them.",
    accessType: "project",
    access: [EUserPermissions.ADMIN],
    path: "/empty-state/disabled-feature/cycles",
    primaryButton: {
      text: "Manage features",
    },
  },
  [EmptyStateType.DISABLED_PROJECT_MODULE]: {
    key: EmptyStateType.DISABLED_PROJECT_MODULE,
    title: "Modules are not enabled for the project.",
    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. Enable modules from project settings.",
    accessType: "project",
    access: [EUserPermissions.ADMIN],
    path: "/empty-state/disabled-feature/modules",
    primaryButton: {
      text: "Manage features",
    },
  },
  [EmptyStateType.DISABLED_PROJECT_PAGE]: {
    key: EmptyStateType.DISABLED_PROJECT_PAGE,
    title: "Pages are not enabled for the project.",
    description:
      "Pages are thought spotting 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. Enable the pages feature to start creating them in your project.",
    accessType: "project",
    access: [EUserPermissions.ADMIN],
    path: "/empty-state/disabled-feature/pages",
    primaryButton: {
      text: "Manage features",
    },
  },
  [EmptyStateType.DISABLED_PROJECT_VIEW]: {
    key: EmptyStateType.DISABLED_PROJECT_VIEW,
    title: "Views is not enabled for this project.",
    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. Enable views in the project settings to start using them.",
    accessType: "project",
    access: [EUserPermissions.ADMIN],
    path: "/empty-state/disabled-feature/views",
    primaryButton: {
      text: "Manage features",
    },
  },
  [EmptyStateType.INBOX_SIDEBAR_OPEN_TAB]: {
    key: EmptyStateType.INBOX_SIDEBAR_OPEN_TAB,
    title: "No open issues",
    description: "Find open issues here. Create new issue.",
    path: "/empty-state/intake/intake-issue",
  },
  [EmptyStateType.INBOX_SIDEBAR_CLOSED_TAB]: {
    key: EmptyStateType.INBOX_SIDEBAR_CLOSED_TAB,
    title: "No closed issues",
    description: "All the issues whether accepted or \n declined can be found here.",
    path: "/empty-state/intake/intake-issue",
  },
  [EmptyStateType.INBOX_SIDEBAR_FILTER_EMPTY_STATE]: {
    key: EmptyStateType.INBOX_SIDEBAR_FILTER_EMPTY_STATE,
    title: "No  matching issues",
    description: "No issue matches filter applied in intake. \n Create a new issue.",
    path: "/empty-state/intake/filter-issue",
  },
  [EmptyStateType.INBOX_DETAIL_EMPTY_STATE]: {
    key: EmptyStateType.INBOX_DETAIL_EMPTY_STATE,
    title: "Select an issue to view its details.",
    path: "/empty-state/intake/issue-detail",
  },
  [EmptyStateType.WORKSPACE_DRAFT_ISSUES]: {
    key: EmptyStateType.WORKSPACE_DRAFT_ISSUES,
    title: "Half-written issues, and soon, comments will show up here.",
    description: "To try this out, start adding an issue and leave it mid-way or create your first draft below. 😉",
    path: "/empty-state/workspace-draft/issue",
    primaryButton: {
      text: "Create your first draft",
    },
    accessType: "workspace",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.PROJECT_NO_EPICS]: {
    key: EmptyStateType.PROJECT_NO_EPICS,
    title: "Create an epic and assign it to someone, even yourself",
    description:
      "For larger bodies of work that span several cycles and can live across modules, create an epic. Link issues and sub-issues in a project to an epic and jump into an issue from the overview.",
    path: "/empty-state/onboarding/issues",
    primaryButton: {
      text: "Create an Epic",
    },
    accessType: "project",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  // Teams
  [EmptyStateType.TEAM_NO_ISSUES]: {
    key: EmptyStateType.TEAM_NO_ISSUES,
    title: "Create an issue in your team projects 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: "workspace",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.TEAM_EMPTY_FILTER]: {
    key: EmptyStateType.TEAM_EMPTY_FILTER,
    title: "No issues found matching the filters applied",
    path: "/empty-state/empty-filters/",
    secondaryButton: {
      text: "Clear all filters",
    },
    accessType: "workspace",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.TEAM_VIEW]: {
    key: EmptyStateType.TEAM_VIEW,
    title: "Save filtered views for your team. 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 team 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: "workspace",
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
  },
  [EmptyStateType.TEAM_PAGE]: {
    key: EmptyStateType.TEAM_PAGE,
    title: "Team pages are coming soon!",
    description:
      "Write a note, a doc, or a full knowledge base. Get Galileo, Plane’s AI assistant, to help you get started. 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",
  },
  [EmptyStateType.STICKIES]: {
    key: EmptyStateType.STICKIES,
    title: "Stickies are quick notes and to-dos you take down on the fly.",
    description:
      "Capture ideas, ahas, brainwaves, light-bulb moments without scrambling for a pen and paper, hunting for the recorder app on your phone, or firing up a notes app only to forget all about it later. Keep them all right next to your work so you can easily come back, build them up, or well, discard them.",
    path: "/empty-state/stickies/stickies",
    primaryButton: {
      icon: <Plus className="size-4" />,
      text: "Add sticky",
    },
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
    accessType: "workspace",
  },
  [EmptyStateType.STICKIES_SEARCH]: {
    key: EmptyStateType.STICKIES_SEARCH,
    title: "That doesn't match any of your stickies.",
    description: "Try a different term or let us know\nif you are sure your search is right. ",
    path: "/empty-state/stickies/stickies-search",
    primaryButton: {
      icon: <Plus className="size-4" />,
      text: "Add sticky",
    },
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
    accessType: "workspace",
  },
  [EmptyStateType.HOME_WIDGETS]: {
    key: EmptyStateType.HOME_WIDGETS,
    title: "So much to add, yet such empty",
    description: "You have turned off all your widgets. Turn some or\nall of them back on to see delightful things.",
    path: "/empty-state/dashboard/widgets",
    primaryButton: {
      icon: <Shapes className="size-4" />,
      text: "Manage widgets",
    },
    access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
    accessType: "workspace",
  },
} as const;

export const EMPTY_STATE_DETAILS: Record<EmptyStateType, EmptyStateDetails> = emptyStateDetails;
