diff --git a/src/Components/Cards/BlueCard.jsx b/src/Components/Cards/BlueCard.jsx
new file mode 100644
index 0000000..2e300bd
--- /dev/null
+++ b/src/Components/Cards/BlueCard.jsx
@@ -0,0 +1,41 @@
+import { Box, Stack, Text, } from '@chakra-ui/react'
+import React from 'react'
+import { MdGroups } from 'react-icons/md'
+
+function BlueCard() {
+ return (
+
+
+
+
+
+
+
+ {item.title}
+
+
+
+ {item.count}
+
+
+
+
+
+
+
+ {item.linkText}
+
+
+
+ )
+}
+
+export default BlueCard
\ No newline at end of file
diff --git a/src/Contexts/GlobalStateProvider.jsx b/src/Contexts/GlobalStateProvider.jsx
index 9c8340a..d74ae2f 100644
--- a/src/Contexts/GlobalStateProvider.jsx
+++ b/src/Contexts/GlobalStateProvider.jsx
@@ -46,7 +46,7 @@ const GlobalStateProvider = ({ children }) => {
{
id: 1,
EmpID: "124589",
- Name: "Status",
+ Name: "Jackson",
emailAddress: "in***@wdimails.com",
mobileNumber: "+91 ***8451254",
Grade: "L1",
diff --git a/src/Pages/OptiFiiExpense/OptiFiiExpenseDashboard.jsx b/src/Pages/OptiFiiExpense/OptiFiiExpenseDashboard.jsx
index 2057af2..cee5cf5 100644
--- a/src/Pages/OptiFiiExpense/OptiFiiExpenseDashboard.jsx
+++ b/src/Pages/OptiFiiExpense/OptiFiiExpenseDashboard.jsx
@@ -220,6 +220,8 @@ const OptiFiiExpenseDashboard = () => {
))}
+
+
{gridItemsData.map((item, index) => (
diff --git a/src/Pages/OptiFiiExpense/ReimbursementRequest.jsx b/src/Pages/OptiFiiExpense/ReimbursementRequest.jsx
index 84318c1..b51c5a7 100644
--- a/src/Pages/OptiFiiExpense/ReimbursementRequest.jsx
+++ b/src/Pages/OptiFiiExpense/ReimbursementRequest.jsx
@@ -1,42 +1,154 @@
-import { Box, HStack, Text, VStack } from "@chakra-ui/react";
-import React from "react";
+import {
+ Box,
+ Button,
+ HStack,
+ Icon,
+ Checkbox,
+ Tag,
+ TagLabel,
+ Text,
+ Image,
+} from "@chakra-ui/react";
+import React, { useContext, useEffect, useState } from "react";
import MiniHeader from "../../Components/MiniHeader";
+import GlobalStateContext from "../../Contexts/GlobalStateContext";
+import NormalTable from "../../Components/DataTable/NormalTable";
+import { RiDeleteBin5Line } from "react-icons/ri";
+import { AiOutlineEdit } from "react-icons/ai";
+import { FaRegEye } from "react-icons/fa";
+import { PiReceipt } from "react-icons/pi";
import { MdOutlineNoFood } from "react-icons/md";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import { useNavigate } from "react-router-dom";
+
const ReimbursementRequest = () => {
+
+
+ const navigate = useNavigate();
+ const { employees } = useContext(GlobalStateContext);
+ const [isLoading, setIsLoading] = useState(false);
+
+ useEffect(() => {
+ // Set isLoading to true
+ setIsLoading(true);
+
+ // Simulate a 3-second delay
+ const timer = setTimeout(() => {
+ setIsLoading(false); // Set isLoading to false after 3 seconds
+ }, 500);
+
+ // Cleanup the timer when the component unmounts or when the useEffect re-runs
+ return () => clearTimeout(timer);
+ }, []); // Empty dependency array means this effect runs once after the component mounts
+
+ // ===============================[ Table Header ]
+ const tableHeadRow = [
+ "Select",
+ "Sr. No",
+ "Name",
+ "Status",
+ "Email Address",
+ "Mobile number",
+ "Grade",
+ "Department",
+ "Role",
+ "Action",
+ ];
+
+ // const extractedArray = reportsHistory.map((item)=>({ }))
+
+ const extractedArray = employees.map((item, index) => ({
+ "Sr. No": (
+
+ {index + 1}
+
+ ),
+ "Name": item?.Name,
+ "Email Address": item?.emailAddress,
+ "Mobile number": item?.mobileNumber,
+ Grade: item?.Grade,
+ Department: item?.Department,
+ Role: item?.Role,
+ Status: (
+
+
+
+ Pooja Shah
+
+
+ ),
+ Action: (
+
+
+ ),
+ }));
+
return (
-
+
{/* */}
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ Food
+
+
+ Created by - Reethik Thota
+
+
+
-
- Food
-
-
+
Created by - Reethik Thota
+
+ ₹ 50,000
+
-
-
- Created by - Reethik Thota
-
-
- ₹ 50,000
-
-
-
-
+
+
+
+
);
};
diff --git a/src/Pages/OptiFiiExpense/ReimbursementRequestView.jsx b/src/Pages/OptiFiiExpense/ReimbursementRequestView.jsx
index 0b30343..dd5017d 100644
--- a/src/Pages/OptiFiiExpense/ReimbursementRequestView.jsx
+++ b/src/Pages/OptiFiiExpense/ReimbursementRequestView.jsx
@@ -1,23 +1,146 @@
-import { Badge, Box, HStack, Image, Text, VStack } from "@chakra-ui/react";
-import React from "react";
+import {
+ Box,
+ Button,
+ HStack,
+ VStack,
+ Icon,
+ Checkbox,
+ Tag,
+ TagLabel,
+ Text,
+ Image,
+ useDisclosure,
+ Alert,
+ CloseButton,
+ AlertDescription,
+} from "@chakra-ui/react";
+import React, { useContext, useEffect, useState } from "react";
import MiniHeader from "../../Components/MiniHeader";
+import GlobalStateContext from "../../Contexts/GlobalStateContext";
+import NormalTable from "../../Components/DataTable/NormalTable";
+import { RiDeleteBin5Line } from "react-icons/ri";
+import { AiOutlineEdit } from "react-icons/ai";
+import { LiaFileInvoiceSolid } from "react-icons/lia";
+import { PiReceipt } from "react-icons/pi";
import { MdOutlineNoFood } from "react-icons/md";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
import { IoMdCheckmark } from "react-icons/io";
+import { RxCross2 } from "react-icons/rx";
+import PrimaryButton from "../../Components/Buttons/PrimaryButton"
+import SecondaryButton from "../../Components/Buttons/SecondaryButton"
const ReimbursementRequestView = () => {
+
+ const [alertStatus, setAlertStatus] = useState(null);
+
+ const handleApprove = () => {
+ setAlertStatus('success');
+ };
+
+ const handleReject = () => {
+ setAlertStatus('error');
+ };
+
+ const { employees } = useContext(GlobalStateContext);
+ const [isLoading, setIsLoading] = useState(false);
+
+ useEffect(() => {
+ // Set isLoading to true
+ setIsLoading(true);
+
+ // Simulate a 3-second delay
+ const timer = setTimeout(() => {
+ setIsLoading(false); // Set isLoading to false after 3 seconds
+ }, 500);
+
+ // Cleanup the timer when the component unmounts or when the useEffect re-runs
+ return () => clearTimeout(timer);
+ }, []); // Empty dependency array means this effect runs once after the component mounts
+
+ // ===============================[ Table Header ]
+ const tableHeadRow = [
+ "Select",
+ "Sr. No",
+ "Name",
+ "Email Address",
+ "Mobile number",
+ "Grade",
+ "Department",
+ "Role",
+ "Action",
+ ];
+
+ // const extractedArray = reportsHistory.map((item)=>({ }))
+
+ const extractedArray = employees.map((item, index) => ({
+ "Sr. No": (
+
+ {index + 1}
+
+ ),
+ Name: item?.Name,
+ "Email Address": item?.emailAddress,
+ "Mobile number": item?.mobileNumber,
+ Grade: item?.Grade,
+ Department: item?.Department,
+ Role: item?.Role,
+ Action: (
+
+
+
+
+
+ Invoice243
+
+
+ ),
+ }));
+
return (
-
+
+
+
+
+
+
{/* */}
+ {alertStatus === 'success' && (
+
+
+
+
+
+ Approved by giftryt
+
+
+
+
+ )}
-
-
-
-
-
+ {alertStatus === 'error' && (
+
+
+
+
+
+ Rejected by giftryt
+
+
+
+
+ )}
+
@@ -62,8 +185,6 @@ const ReimbursementRequestView = () => {
-
-
@@ -83,8 +204,7 @@ const ReimbursementRequestView = () => {
-
-
+
Submitted by
@@ -132,7 +252,22 @@ const ReimbursementRequestView = () => {
+
+
+
+
+
+
+
+
+
);
};