From c3cc04777a69227a456afe43d397cb899fdb9ec1 Mon Sep 17 00:00:00 2001
From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com>
Date: Fri, 28 Aug 2026 00:10:29 +0530
Subject: [PATCH] refactor: migrate web progress indicators to
@makeplane/propel (#9698)
* refactor: migrate web progress indicators to @makeplane/propel
* style: fix comboButton indentation in dropdowns
* fix: scale cycle and module progress rings to 30px
---
.../cycles/active-cycle/progress.tsx | 22 +++++++-----
.../cycles/list/cycles-list-item.tsx | 26 +++++++++-----
.../attachment-list-upload-item.tsx | 4 +--
.../attachment/attachment-upload-details.tsx | 4 +--
.../issue-detail-widgets/sub-issues/title.tsx | 10 ++++--
.../components/modules/module-card-item.tsx | 27 ++++++---------
.../components/modules/module-list-item.tsx | 34 ++++++++++++-------
7 files changed, 77 insertions(+), 50 deletions(-)
diff --git a/apps/web/core/components/cycles/active-cycle/progress.tsx b/apps/web/core/components/cycles/active-cycle/progress.tsx
index 4688e9dc5b..d5d402c4ac 100644
--- a/apps/web/core/components/cycles/active-cycle/progress.tsx
+++ b/apps/web/core/components/cycles/active-cycle/progress.tsx
@@ -10,8 +10,9 @@ import { useTheme } from "next-themes";
import { PROGRESS_STATE_GROUPS_DETAILS } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
import type { TWorkItemFilterCondition } from "@plane/shared-state";
+import { LinearProgress } from "@makeplane/propel/components/linear-progress";
import type { ICycle } from "@plane/types";
-import { LinearProgressIndicator, Loader } from "@plane/ui";
+import { Loader } from "@plane/ui";
// assets
import darkProgressAsset from "@/app/assets/empty-state/active-cycle/progress-dark.webp?url";
import lightProgressAsset from "@/app/assets/empty-state/active-cycle/progress-light.webp?url";
@@ -32,12 +33,9 @@ export const ActiveCycleProgress = observer(function ActiveCycleProgress(props:
// plane hooks
const { t } = useTranslation();
// derived values
- const progressIndicatorData = PROGRESS_STATE_GROUPS_DETAILS.map((group, index) => ({
- id: index,
- name: group.title,
- value: cycle && cycle.total_issues > 0 ? (cycle[group.key as keyof ICycle] as number) : 0,
- color: group.color,
- }));
+ const closedIssues = cycle ? cycle.completed_issues + cycle.cancelled_issues : 0;
+ const closableIssues = cycle ? cycle.total_issues - cycle.cancelled_issues : 0;
+ const progressValue = closableIssues > 0 ? (closedIssues / closableIssues) * 100 : 0;
const groupedIssues: any = cycle
? {
completed: cycle?.completed_issues,
@@ -61,7 +59,15 @@ export const ActiveCycleProgress = observer(function ActiveCycleProgress(props:
)}
- {cycle.total_issues > 0 &&