From 9ffe0caed9a7a31c134c005de19f962aaf768983 Mon Sep 17 00:00:00 2001 From: Br0wnHammer Date: Mon, 25 May 2026 23:31:02 +0530 Subject: [PATCH] feat(client): add StepProgress segmented progress bar component --- .../design-elements/StepProgress.tsx | 42 +++++++++++++++++++ .../src/Components/design-elements/index.tsx | 1 + 2 files changed, 43 insertions(+) create mode 100644 client/src/Components/design-elements/StepProgress.tsx diff --git a/client/src/Components/design-elements/StepProgress.tsx b/client/src/Components/design-elements/StepProgress.tsx new file mode 100644 index 000000000..fe7fb2880 --- /dev/null +++ b/client/src/Components/design-elements/StepProgress.tsx @@ -0,0 +1,42 @@ +import Stack from "@mui/material/Stack"; +import Box from "@mui/material/Box"; +import { useTheme } from "@mui/material/styles"; +import { alpha } from "@mui/material/styles"; +import { LAYOUT } from "@/Utils/Theme/constants"; + +interface StepProgressProps { + steps: number; + current: number; +} + +export const StepProgress = ({ steps, current }: StepProgressProps) => { + const theme = useTheme(); + const activeBg = `linear-gradient(135deg, ${theme.palette.primary.light} 0%, ${theme.palette.primary.main} 100%)`; + const completedBg = `linear-gradient(135deg, ${alpha(theme.palette.primary.light, 0.5)} 0%, ${alpha(theme.palette.primary.main, 0.5)} 100%)`; + + return ( + + {Array.from({ length: steps }).map((_, index) => { + const background = + index < current + ? completedBg + : index === current + ? activeBg + : theme.palette.divider; + return ( + + ); + })} + + ); +}; diff --git a/client/src/Components/design-elements/index.tsx b/client/src/Components/design-elements/index.tsx index 130ccd831..d7d38d014 100644 --- a/client/src/Components/design-elements/index.tsx +++ b/client/src/Components/design-elements/index.tsx @@ -27,3 +27,4 @@ export * from "./OfflineBanner"; export * from "./Avatar"; export * from "./StatusCodeLabel"; export * from "./StrategyBadge"; +export * from "./StepProgress";