[WEB-1730] chore: project intake (#5140)

* chore: intake icon added

* chore: project inbox updated to intake in app sidebar and feature settings

* chore: intake icon added

* chore: project intake

* chore: project intake empty state asset updated
This commit is contained in:
Anmol Singh Bhatia 2024-07-16 15:21:03 +05:30 committed by GitHub
parent cd85a9fe09
commit e4d6e5e1af
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
31 changed files with 56 additions and 27 deletions

View file

@ -22,3 +22,4 @@ export * from "./side-panel-icon";
export * from "./transfer-icon";
export * from "./info-icon";
export * from "./dropdown-icon";
export * from "./intake";

View file

@ -0,0 +1,22 @@
import * as React from "react";
import { ISvgIcons } from "./type";
export const Intake: React.FC<ISvgIcons> = ({ className = "text-current", ...rest }) => (
<svg
viewBox="0 0 16 16"
className={`${className}`}
stroke="currentColor"
fill="none"
xmlns="http://www.w3.org/2000/svg"
strokeWidth="1.25"
strokeLinecap="round"
strokeLinejoin="round"
{...rest}
>
<path d="M12.1599 3.59961V9.60688L8.04358 12.0796V6.04325L12.1599 3.59961Z" />
<path d="M5.98547 10.8657V4.82938L10.1018 2.38574" />
<path d="M3.89087 9.60695V3.57059L8.00723 1.12695" />
<path d="M1.06909 8.77051V13.3887C1.06909 14.1814 1.71636 14.8287 2.50909 14.8287H13.4909C14.2836 14.8287 14.9309 14.1814 14.9309 13.3887V8.77051" />
</svg>
);

View file

@ -5,7 +5,7 @@ import { observer } from "mobx-react";
import { useParams } from "next/navigation";
import { RefreshCcw } from "lucide-react";
// ui
import { Breadcrumbs, Button, LayersIcon } from "@plane/ui";
import { Breadcrumbs, Button, Intake } from "@plane/ui";
// components
import { BreadcrumbLink, Logo } from "@/components/common";
import { InboxIssueCreateEditModalRoot } from "@/components/inbox";
@ -45,7 +45,7 @@ export const ProjectInboxHeader: FC = observer(() => {
<Breadcrumbs.BreadcrumbItem
type="text"
link={<BreadcrumbLink label="Inbox" icon={<LayersIcon className="h-4 w-4 text-custom-text-300" />} />}
link={<BreadcrumbLink label="Intake" icon={<Intake className="h-4 w-4 text-custom-text-300" />} />}
/>
</Breadcrumbs>

View file

@ -1,6 +1,6 @@
import { ReactNode } from "react";
import { FileText, Inbox, Timer } from "lucide-react";
import { ContrastIcon, DiceIcon, PhotoFilterIcon } from "@plane/ui";
import { FileText, Timer } from "lucide-react";
import { ContrastIcon, DiceIcon, PhotoFilterIcon, Intake } from "@plane/ui";
export type TFeatureList = {
[key: string]: {
@ -58,9 +58,9 @@ export const PROJECT_FEATURES_LIST: TProjectFeatures = {
},
inbox: {
property: "inbox_view",
title: "Inbox",
title: "Intake",
description: "Capture external inputs, move valid issues to workflow.",
icon: <Inbox className="h-5 w-5 flex-shrink-0 text-custom-text-300" />,
icon: <Intake className="h-5 w-5 flex-shrink-0 text-custom-text-300" />,
isPro: false,
isEnabled: true,
},

View file

@ -19,10 +19,9 @@ import {
SignalMediumIcon,
MessageSquareIcon,
UsersIcon,
Inbox,
} from "lucide-react";
import { IIssueActivity } from "@plane/types";
import { Tooltip, BlockedIcon, BlockerIcon, RelatedIcon, LayersIcon, DiceIcon } from "@plane/ui";
import { Tooltip, BlockedIcon, BlockerIcon, RelatedIcon, LayersIcon, DiceIcon, Intake } from "@plane/ui";
// helpers
import { renderFormattedDate } from "@/helpers/date-time.helper";
import { capitalizeFirstLetter } from "@/helpers/string.helper";
@ -710,10 +709,10 @@ const activityDetails: {
<IssueLink activity={activity} />
</>
)}
{activity.verb === "2" && ` from inbox by marking a duplicate issue.`}
{activity.verb === "2" && ` from intake by marking a duplicate issue.`}
</>
),
icon: <Inbox size={12} color="#6b7280" aria-hidden="true" />,
icon: <Intake className="size-3" color="#6b7280" aria-hidden="true" />,
},
};

View file

@ -1,6 +1,7 @@
import { FC, useEffect, useState } from "react";
import { observer } from "mobx-react";
import { Inbox, PanelLeft } from "lucide-react";
import { PanelLeft } from "lucide-react";
import { Intake } from "@plane/ui";
// components
import { EmptyState } from "@/components/empty-state";
import { InboxSidebar, InboxContentRoot } from "@/components/inbox";
@ -50,7 +51,7 @@ export const InboxIssueRoot: FC<TInboxIssueRoot> = observer((props) => {
if (error && error?.status === "init-error")
return (
<div className="relative w-full h-full flex flex-col gap-3 justify-center items-center">
<Inbox size={60} strokeWidth={1.5} />
<Intake className="size-[60px]" strokeWidth={1.5} />
<div className="text-custom-text-200">{error?.message}</div>
</div>
);

View file

@ -1,7 +1,7 @@
import { FC } from "react";
import { observer } from "mobx-react";
// hooks
import { Inbox } from "lucide-react";
import { Intake } from "@plane/ui";
import { useIssueDetail } from "@/hooks/store";
// components
import { IssueActivityBlockComponent } from "./";
@ -35,7 +35,11 @@ export const IssueInboxActivity: FC<TIssueInboxActivity> = observer((props) => {
if (!activity) return <></>;
return (
<IssueActivityBlockComponent icon={<Inbox className="h-4 w-4 flex-shrink-0" />} activityId={activityId} ends={ends}>
<IssueActivityBlockComponent
icon={<Intake className="h-4 w-4 flex-shrink-0" />}
activityId={activityId}
ends={ends}
>
<>{getInboxActivityMessage()}</>
</IssueActivityBlockComponent>
);

View file

@ -19,7 +19,6 @@ import {
Share2,
LogOut,
MoreHorizontal,
Inbox,
ChevronRight,
} from "lucide-react";
import { Disclosure, Transition } from "@headlessui/react";
@ -35,6 +34,7 @@ import {
setPromiseToast,
DropIndicator,
DragHandle,
Intake,
} from "@plane/ui";
// components
import { Logo } from "@/components/common";
@ -91,9 +91,9 @@ const navigation = (workspaceSlug: string, projectId: string) => [
Icon: FileText,
},
{
name: "Inbox",
name: "Intake",
href: `/${workspaceSlug}/projects/${projectId}/inbox`,
Icon: Inbox,
Icon: Intake,
},
{
name: "Settings",
@ -497,7 +497,9 @@ export const SidebarProjectsListItem: React.FC<Props> = observer((props) => {
}
)}
>
<item.Icon className="flex-shrink-0 size-4 stroke-[1.5]" />
<item.Icon
className={`flex-shrink-0 size-4 ${item.name === "Intake" ? "stroke-1" : "stroke-[1.5]"}`}
/>
{!isSidebarCollapsed && <span className="text-xs font-medium">{item.name}</span>}
</div>
</Tooltip>

View file

@ -599,7 +599,7 @@ const emptyStateDetails = {
[EmptyStateType.NOTIFICATION_DETAIL_EMPTY_STATE]: {
key: EmptyStateType.INBOX_DETAIL_EMPTY_STATE,
title: "Select to view details.",
path: "/empty-state/inbox/issue-detail",
path: "/empty-state/intake/issue-detail",
},
[EmptyStateType.NOTIFICATION_ALL_EMPTY_STATE]: {
key: EmptyStateType.NOTIFICATION_ALL_EMPTY_STATE,
@ -677,12 +677,12 @@ const emptyStateDetails = {
},
[EmptyStateType.DISABLED_PROJECT_INBOX]: {
key: EmptyStateType.DISABLED_PROJECT_INBOX,
title: "Inbox is not enabled for the project.",
title: "Intake is not enabled for the project.",
description:
"Inbox helps you manage incoming requests to your project and add them as issues in your workflow. Enable inbox \n from project settings to manage requests.",
"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: EUserProjectRoles.ADMIN,
path: "/empty-state/disabled-feature/inbox",
path: "/empty-state/disabled-feature/intake",
primaryButton: {
text: "Manage features",
},
@ -739,24 +739,24 @@ const emptyStateDetails = {
key: EmptyStateType.INBOX_SIDEBAR_OPEN_TAB,
title: "No open issues",
description: "Find open issues here. Create new issue.",
path: "/empty-state/inbox/inbox-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/inbox/inbox-issue",
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 inbox. \n Create a new issue.",
path: "/empty-state/inbox/filter-issue",
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/inbox/issue-detail",
path: "/empty-state/intake/issue-detail",
},
} as const;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View file

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before After
Before After