Skip to content

Feat: Task Popover#896

Open
PraveenKum11 wants to merge 9 commits intofeat/redesignfrom
feat/task-popover
Open

Feat: Task Popover#896
PraveenKum11 wants to merge 9 commits intofeat/redesignfrom
feat/task-popover

Conversation

@PraveenKum11
Copy link
Collaborator

Description

  • Adds a Task Popover component (FE)
  • Used to show task details and progress when hovering a card

Screenshot/Screencast

image image

Checklist

  • I have carefully reviewed the code before submitting it for review.
  • This code is adequately covered by unit tests to validate its functionality.
  • I have conducted thorough testing to ensure it functions as intended.
  • A member of the QA team has reviewed and tested this PR (To be checked by QA or code reviewer)

Partially addresses #830

@PraveenKum11 PraveenKum11 marked this pull request as ready for review March 16, 2026 07:45
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the frontend design system with a new ProgressV2 component (including overflow handling) and adds a new app-level TaskPopover UI that uses it, alongside a small time parsing utility and Tailwind source configuration updates.

Changes:

  • Added ProgressV2 component + public exports in the design-system package.
  • Added timeToDecimalHours("HH:MM") utility to support progress calculations.
  • Added a new TaskPopover component in the app and updated Tailwind CSS sources to scan design-system source for class usage.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
frontend/packages/design-system/src/utils/index.ts Formatting tweaks + new timeToDecimalHours utility.
frontend/packages/design-system/src/components/progress-v2/types.ts Introduces props type for the new ProgressV2 component.
frontend/packages/design-system/src/components/progress-v2/progress-v2.tsx Implements new progress component (overflow + interval modes).
frontend/packages/design-system/src/components/progress-v2/index.ts Barrel export for ProgressV2.
frontend/packages/design-system/src/components/index.ts Re-exports ProgressV2 from the design-system components entrypoint.
frontend/packages/app/src/global.css Adds Tailwind @source for design-system source scanning + whitespace cleanup.
frontend/packages/app/src/components/taskPopover.tsx New popover UI showing task status + progress using ProgressV2.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

@ayushnirwal ayushnirwal requested a review from b1ink0 March 17, 2026 06:15
Comment on lines +38 to +55
return (
<div className="p-3 rounded-xl shadow-2xl bg-surface-modal w-88">
<div className="grid grid-cols-[min-content_auto] items-center gap-x-2 gap-y-1.5 mb-6">
<TaskStatus status={status} className="col-start-1 col-end-2" />
<div className="col-start-2 col-end-3 text-base font-semibold">
{label}
</div>

{badges.length > 0 && (
<div className="flex flex-wrap col-start-2 col-end-3 gap-1">
{badges.map((badge, index) => (
<Badge key={index} variant="subtle" size="md" prefix={badge.icon}>
{badge.text}
</Badge>
))}
</div>
)}
</div>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Handle text overflow for very long labels or badge text; it should truncate properly.

"Pending Review": "text-ink-gray-9",
Overdue: "text-ink-red-4",
Completed: "text-ink-gray-9",
Cancelled: "text-ink-gray-9",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let’s use camelCase for keys and use a map to map them to their values.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @b1ink0, I deliberately removed the mapping - let's discuss this on call.

Copy link
Collaborator Author

@PraveenKum11 PraveenKum11 Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Brief reasoning:

  • There is no benefit of using one over the other, except using camel case creates an overhead
  • The API returns Capital case, so we can just match the api
  • We already have the Status type in app/types
  • We don't need to export the map everywhere, just the type
  • This was the existing model

starred = false,
timeEntries,
onCellClick,
taskHoverContent,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lets add a renderName format for any prop which is renders a JSX component.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants