diff --git a/web-ui/package.json b/web-ui/package.json
index 0c29bcc59e..4a4e4d0e94 100644
--- a/web-ui/package.json
+++ b/web-ui/package.json
@@ -56,7 +56,8 @@
"serve": "vite preview",
"start": "vite",
"storybook": "storybook dev -p 6006",
- "test": "vitest"
+ "test": "vitest",
+ "update-test": "vitest -u"
},
"eslintConfig": {
"extends": "react-app"
diff --git a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.jsx b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.jsx
new file mode 100644
index 0000000000..b3c9a26e93
--- /dev/null
+++ b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.jsx
@@ -0,0 +1,28 @@
+import React, { useEffect, useState } from 'react';
+import Box from '@mui/material/Box';
+import Stepper from '@mui/material/Stepper';
+import Step from '@mui/material/Step';
+import StepLabel from '@mui/material/StepLabel';
+import optionsArr from './reviewStatus.json';
+
+export default function ReviewPeriodStepper({ reviewPeriod }) {
+ const [activeIndex, setActiveIndex] = useState(0);
+
+ useEffect(() => {
+ let revPeriod = reviewPeriod?.reviewStatus;
+ const index = optionsArr.findIndex(opt => opt.option === revPeriod);
+ setActiveIndex(index);
+ }, [reviewPeriod]);
+
+ return (
+
+
+ {optionsArr.map(({ label, option }) => (
+
+ {label}
+
+ ))}
+
+
+ );
+}
diff --git a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx
new file mode 100644
index 0000000000..11eba1b0bf
--- /dev/null
+++ b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.stories.jsx
@@ -0,0 +1,36 @@
+import React from 'react';
+import ReviewPeriodStepper from './ReviewPeriodStepper';
+
+export default {
+ component: ReviewPeriodStepper,
+ title: 'Check Ins/Review Period Stepper',
+ decorators: [
+ ReviewPeriodStepper => (
+
+
+
+ )
+ ]
+};
+
+const Template = args => {
+ return ;
+};
+
+const reviewPeriodStepperData = {
+ reviewPeriod: {
+ id: "b0b8a6f3-2d15-4923-8552-2f729f58ea0f",
+ name: "Test",
+ reviewStatus: "OPEN",
+ launchDate: "2024-05-03T15:53:56.673Z",
+ selfReviewCloseDate: "2024-05-03T15:53:56.673Z",
+ closeDate: "2024-05-03T15:53:56.673Z",
+ reviewTemplateId: "d1e94b60-47c4-4945-87d1-4dc88f088e57",
+ selfReviewTemplateId: "d1e94b60-47c4-4945-87d1-4dc88f088e57"
+ }
+};
+
+export const ReviewPeriodSteppers = Template.bind({});
+ReviewPeriodSteppers.args = {
+ ...reviewPeriodStepperData
+};
diff --git a/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx
new file mode 100644
index 0000000000..58281b485a
--- /dev/null
+++ b/web-ui/src/components/reviews/periods/ReviewPeriodStepper.test.jsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import ReviewPeriodStepper from './ReviewPeriodStepper';
+import { AppContextProvider } from '../../../context/AppContext';
+
+const reviewPeriod = {
+ id: "b0b8a6f3-2d15-4923-8552-2f729f58ea0f",
+ name: "Test",
+ reviewStatus: 'OPEN',
+ launchDate: "2024-05-03T15:53:56.673Z",
+ selfReviewCloseDate: "2024-05-03T15:53:56.673Z",
+ closeDate: "2024-05-03T15:53:56.673Z",
+ reviewTemplateId: "d1e94b60-47c4-4945-87d1-4dc88f088e57",
+ selfReviewTemplateId: "d1e94b60-47c4-4945-87d1-4dc88f088e57"
+}
+it('renders correctly', () => {
+ snapshot(
+
+
+
+ );
+});
\ No newline at end of file
diff --git a/web-ui/src/components/reviews/periods/__snapshots__/ReviewPeriodStepper.test.jsx.snap b/web-ui/src/components/reviews/periods/__snapshots__/ReviewPeriodStepper.test.jsx.snap
new file mode 100644
index 0000000000..852a79a92f
--- /dev/null
+++ b/web-ui/src/components/reviews/periods/__snapshots__/ReviewPeriodStepper.test.jsx.snap
@@ -0,0 +1,183 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`renders correctly 1`] = `
+
+
+
+
+
+
+
+
+
+
+ Planning
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Awaiting Approval
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Open
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Closed
+
+
+
+
+
+
+
+`;
diff --git a/web-ui/src/components/reviews/periods/reviewStatus.json b/web-ui/src/components/reviews/periods/reviewStatus.json
new file mode 100644
index 0000000000..8fc0539798
--- /dev/null
+++ b/web-ui/src/components/reviews/periods/reviewStatus.json
@@ -0,0 +1,6 @@
+[
+ { "label": "Planning", "option": "PLANNING" },
+ { "label": "Awaiting Approval", "option": "AWAITING_APPROVAL" },
+ { "label": "Open", "option": "OPEN" },
+ { "label": "Closed", "option": "CLOSED" }
+]