diff --git a/web/core/components/issues/issue-detail/issue-detail-quick-actions.tsx b/web/core/components/issues/issue-detail/issue-detail-quick-actions.tsx index 72f4e1c47..b5575901d 100644 --- a/web/core/components/issues/issue-detail/issue-detail-quick-actions.tsx +++ b/web/core/components/issues/issue-detail/issue-detail-quick-actions.tsx @@ -146,7 +146,6 @@ export const IssueDetailQuickActions: FC = observer((props) => { .finally(() => setIsRestoring(false)); }; - // auth const isEditable = !!currentProjectRole && currentProjectRole >= EUserProjectRoles.MEMBER; const canRestoreIssue = !!currentProjectRole && currentProjectRole >= EUserProjectRoles.MEMBER; diff --git a/web/core/components/issues/issue-detail/sidebar.tsx b/web/core/components/issues/issue-detail/sidebar.tsx index d8ee6f77e..66d44d9ec 100644 --- a/web/core/components/issues/issue-detail/sidebar.tsx +++ b/web/core/components/issues/issue-detail/sidebar.tsx @@ -11,12 +11,13 @@ import { Signal, Tag, Triangle, + UserCircle2, Users, XCircle, } from "lucide-react"; // hooks // components -import { ContrastIcon, DiceIcon, DoubleCircleIcon, RelatedIcon } from "@plane/ui"; +import { ContrastIcon, DiceIcon, DoubleCircleIcon, RelatedIcon, Tooltip } from "@plane/ui"; import { DateDropdown, EstimateDropdown, @@ -26,6 +27,7 @@ import { } from "@/components/dropdowns"; // ui // helpers +import { ButtonAvatars } from "@/components/dropdowns/member/avatar"; import { IssueCycleSelect, IssueLabel, @@ -40,7 +42,8 @@ import { cn } from "@/helpers/common.helper"; import { getDate, renderFormattedPayloadDate } from "@/helpers/date-time.helper"; import { shouldHighlightIssueDueDate } from "@/helpers/issue.helper"; // types -import { useProjectEstimates, useIssueDetail, useProject, useProjectState } from "@/hooks/store"; +import { useProjectEstimates, useIssueDetail, useProject, useProjectState, useMember } from "@/hooks/store"; +import { usePlatformOS } from "@/hooks/use-platform-os"; // components import type { TIssueOperations } from "./root"; // icons @@ -63,10 +66,14 @@ export const IssueDetailsSidebar: React.FC = observer((props) => { const { issue: { getIssueById }, } = useIssueDetail(); + const { getUserDetails } = useMember(); const { getStateById } = useProjectState(); + const { isMobile } = usePlatformOS(); const issue = getIssueById(issueId); if (!issue) return <>; + const createdByDetails = getUserDetails(issue.created_by); + // derived values const projectDetails = getProjectById(issue.project_id); const stateDetails = getStateById(issue.state_id); @@ -143,6 +150,21 @@ export const IssueDetailsSidebar: React.FC = observer((props) => { /> + {createdByDetails && ( +
+
+ + Created by +
+ +
+ + {createdByDetails?.display_name} +
+
+
+ )} +
diff --git a/web/core/components/issues/peek-overview/properties.tsx b/web/core/components/issues/peek-overview/properties.tsx index 0acf5bdd1..b7cea3239 100644 --- a/web/core/components/issues/peek-overview/properties.tsx +++ b/web/core/components/issues/peek-overview/properties.tsx @@ -13,10 +13,11 @@ import { CalendarClock, CalendarCheck2, Users, + UserCircle2, } from "lucide-react"; // hooks // ui icons -import { DiceIcon, DoubleCircleIcon, ContrastIcon, RelatedIcon } from "@plane/ui"; +import { DiceIcon, DoubleCircleIcon, ContrastIcon, RelatedIcon, Tooltip } from "@plane/ui"; // components import { DateDropdown, @@ -25,6 +26,7 @@ import { MemberDropdown, StateDropdown, } from "@/components/dropdowns"; +import { ButtonAvatars } from "@/components/dropdowns/member/avatar"; import { IssueLinkRoot, IssueCycleSelect, @@ -38,7 +40,8 @@ import { import { cn } from "@/helpers/common.helper"; import { getDate, renderFormattedPayloadDate } from "@/helpers/date-time.helper"; import { shouldHighlightIssueDueDate } from "@/helpers/issue.helper"; -import { useIssueDetail, useProject, useProjectState } from "@/hooks/store"; +import { useIssueDetail, useMember, useProject, useProjectState } from "@/hooks/store"; +import { usePlatformOS } from "@/hooks/use-platform-os"; interface IPeekOverviewProperties { workspaceSlug: string; @@ -56,9 +59,12 @@ export const PeekOverviewProperties: FC = observer((pro issue: { getIssueById }, } = useIssueDetail(); const { getStateById } = useProjectState(); + const { getUserDetails } = useMember(); + const { isMobile } = usePlatformOS(); // derived values const issue = getIssueById(issueId); if (!issue) return <>; + const createdByDetails = getUserDetails(issue?.created_by); const projectDetails = getProjectById(issue.project_id); const isEstimateEnabled = projectDetails?.estimate; const stateDetails = getStateById(issue.state_id); @@ -134,6 +140,22 @@ export const PeekOverviewProperties: FC = observer((pro />
+ {/* created by */} + {createdByDetails && ( +
+
+ + Created by +
+ +
+ + {createdByDetails?.display_name} +
+
+
+ )} + {/* start date */}