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: ( + + Dan Abramov + + 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 = () => { + + + + + + + + + ); };