diff --git a/src/Pages/Expenses/AddExpenseModal.jsx b/src/Pages/Expenses/AddExpenseModal.jsx
index d898e59..a398aa2 100644
--- a/src/Pages/Expenses/AddExpenseModal.jsx
+++ b/src/Pages/Expenses/AddExpenseModal.jsx
@@ -7,115 +7,282 @@ import {
ModalHeader,
ModalOverlay,
} from "@chakra-ui/modal";
-import React from "react";
-import SeccondaryButton from "../../Components/Buttons/SecondaryButton";
-import { AddIcon, EmailIcon } from "@chakra-ui/icons";
-import { PiReceipt, PiReceiptBold } from "react-icons/pi";
-import { useNavigate } from "react-router";
-import { Box, Text, VStack } from "@chakra-ui/layout";
-import { IoReceiptOutline } from "react-icons/io5";
-import invoiceGradiant from '../../assets/invoice_gradiant.svg'
-import moneyBack from '../../assets/money_back.svg'
+import React, { useRef, useState } from "react";
+import { Box, Text, VStack, HStack } from "@chakra-ui/layout";
import { Image } from "@chakra-ui/image";
+import { Input, InputGroup, InputLeftElement, InputRightElement, Select, Textarea } from "@chakra-ui/react";
+import PrimaryButton from "../../Components/Buttons/PrimaryButton";
+import invoiceGradiant from '../../assets/invoice_gradiant.svg';
+import moneyBack from '../../assets/money_back.svg';
+import SecondaryButton from "../../Components/Buttons/SecondaryButton";
+import { CheckIcon } from "@chakra-ui/icons";
+import { LuCalendar } from "react-icons/lu";
+import { useNavigate } from "react-router-dom";
const AddExpenseModal = ({ isOpen, onClose }) => {
+
const navigate = useNavigate();
+ // States for controlling each modal
+ const [isAdvanceOpen, setAdvanceOpen] = useState(false);
+ const [formData, setFormData] = useState({
+ subject: '',
+ issueType: '',
+ subtype: '',
+ description: '',
+ file: null,
+ });
+
+ const inputRef = useRef(null);
+
+ // Open file dialog
+ const handleFileUpload = () => inputRef.current.click();
+
+ // Handle form changes
+ const handleInputChange = (e) => {
+ const { name, value } = e.target;
+ setFormData((prev) => ({
+ ...prev,
+ [name]: value,
+ }));
+ };
+
+ // Handle file input
+ const handleFileChange = (e) => {
+ const file = e.target.files[0];
+ setFormData((prev) => ({
+ ...prev,
+ file: file,
+ }));
+ };
+
+ // Submit form (example handler)
+ const handleSubmit = () => {
+ console.log('Form data:', formData);
+ // Add your submit logic here, e.g., API call
+ };
+
return (
-
-
-
-
- Add Expense
-
-
-
-
-
-
-
-
-
- navigate("/request-reimbursement")}
+ colorScheme="purple"
+ variant={"outline"}
display={"flex"}
- alignItems={"start"}
- flexDirection={"column"}
- flexWrap={"wrap"}
- gap={2}
- color={'#6311CB'}
- borderColor={'#6311CB'}
+ gap={4}
+ justifyContent={"start"}
+ w={"100%"}
+ h={24}
>
-
- Request Reimbursement
-
-
+
- Lorem ipsum dolor sit amet,ed nulla orci psum dolor sit
- amet,ed nulla orci psum dolor sit amet,ed nulla orci psum
- dolor sit amet,ed nulla orci
-
-
-
+
+ Request Reimbursement
+
+
+ Lorem ipsum dolor sit amet,ed nulla orci psum dolor sit amet,ed nulla orci psum dolor sit amet,ed nulla orci psum dolor sit amet,ed nulla orci
+
+
+
+
+
+
+
-
-
-
-
+ {/* Request Expense Advance Modal */}
+ setAdvanceOpen(false)} isCentered>
+
+
+ Advanced Expense Request
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
+
+
+
+
+
+
+
+ Expense type
+
+
+
+
+
+
+
+ Add Amount
+
+
+
+
+ ₹
+
+
+
+
+
+
+
+
+
+ Date
+
+
+
+
+
+ From
+
+
+
+
+
+
+
+
+ To
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Evidence of Appointment
+
+
+
+
+ Upload File
+
+
+
+
+
+
+ Comments
+
+
+
+
+
+
+
+
+
+
+
+ >
);
};
diff --git a/src/Pages/Expenses/AddExpenseModalRequestExpenseAdvance.jsx b/src/Pages/Expenses/AddExpenseModalRequestExpenseAdvance.jsx
new file mode 100644
index 0000000..cc60d03
--- /dev/null
+++ b/src/Pages/Expenses/AddExpenseModalRequestExpenseAdvance.jsx
@@ -0,0 +1,9 @@
+import React from 'react'
+
+const AddExpenseModalRequestExpenseAdvance = () => {
+ return (
+ AddExpenseModalRequestExpenseAdvance
+ )
+}
+
+export default AddExpenseModalRequestExpenseAdvance
\ No newline at end of file
diff --git a/src/Pages/Expenses/AddExpenseModalRequestReimbursement.jsx b/src/Pages/Expenses/AddExpenseModalRequestReimbursement.jsx
new file mode 100644
index 0000000..e69de29
diff --git a/src/Pages/Expenses/RequestReimbursement.jsx b/src/Pages/Expenses/RequestReimbursement.jsx
new file mode 100644
index 0000000..bcf40aa
--- /dev/null
+++ b/src/Pages/Expenses/RequestReimbursement.jsx
@@ -0,0 +1,294 @@
+import { Box, Input, Text, HStack, Button, Icon, Tag, Divider, useToast, Radio, InputGroup, InputLeftElement, Select, InputRightElement, Textarea } from '@chakra-ui/react';
+import React, { useContext } from 'react';
+import MiniHeader from '../../Components/MiniHeader';
+import { OPACITY_ON_LOAD } from '../../Layout/animations';
+import { MdOutlineRamenDining } from "react-icons/md";
+import { RiDeleteBin5Line } from "react-icons/ri";
+import { FaRegFilePdf } from "react-icons/fa";
+import { AiOutlineEdit } from "react-icons/ai";
+import GlobalStateContext from '../../Contexts/GlobalStateContext';
+import PrimaryButton from '../../Components/Buttons/PrimaryButton';
+import SecondaryButton from '../../Components/Buttons/SecondaryButton';
+import { FiUploadCloud } from 'react-icons/fi';
+import { BiScan } from 'react-icons/bi';
+import { LuCalendar } from 'react-icons/lu';
+
+const RequestReimbursement = () => {
+ const { requestsTable } = useContext(GlobalStateContext);
+ const toast = useToast();
+
+ // Handle delete action
+ const handleDelete = (id) => {
+ toast({
+ title: "Request Deleted.",
+ description: "Your reimbursement request has been deleted.",
+ status: "success",
+ duration: 3000,
+ isClosable: true,
+ });
+ // Add delete logic here
+ };
+
+ // Handle edit action
+ const handleEdit = (id) => {
+ toast({
+ title: "Edit Request",
+ description: "Edit functionality to be implemented.",
+ status: "info",
+ duration: 3000,
+ isClosable: true,
+ });
+ // Add edit logic here
+ };
+
+ return (
+
+
+
+
+
+
+ {requestsTable?.length > 0 ? (
+
+ {requestsTable.map((request, index) => (
+
+
+
+
+
+ {request?.transactionType || "N/A"}
+
+
+
+
+
+
+
+ {request?.amountSpent || "0.00"}
+
+
+ {request?.date || "Unknown Date"}
+
+
+
+
+
+ {request?.category || "Food"}
+
+
+
+
+ ))}
+
+ ) : (
+
+
+ No reimbursement requests found.
+
+
+ )}
+
+
+
+
+
+
+
+
+
+ Upload new transaction
+
+
+
+ } />
+ OR
+ } />
+
+
+ {/* Wallet */}
+
+
+
+ Wallet
+
+
+
+
+
+
+
+ Add Amount
+
+
+
+
+ ₹
+
+
+
+
+
+
+
+ Select category
+
+
+
+
+
+ Purpose
+
+
+
+
+
+ Merchant Name
+
+
+
+
+
+
+
+
+ Date
+
+
+
+
+
+
+
+
+
+
+
+
+ Payment Method
+
+
+
+
+
+
+ Comments (Optional)
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default RequestReimbursement;
diff --git a/src/Pages/Onboarding/RegisterOtp.jsx b/src/Pages/Onboarding/RegisterOtp.jsx
new file mode 100644
index 0000000..bbfef0b
--- /dev/null
+++ b/src/Pages/Onboarding/RegisterOtp.jsx
@@ -0,0 +1,86 @@
+import React, { useState } from 'react';
+import { Box, PinInput, PinInputField, Text, HStack, Container, useToast } from '@chakra-ui/react';
+import PrimaryButton from '../../Components/Buttons/PrimaryButton';
+import LoginOtpFrame from './LoginOtpFrame';
+import { useNavigate } from 'react-router-dom';
+import Cookies from 'js-cookie';
+import ToastBox from '../../Components/ToastBox';
+
+const RegisterOtp = () => {
+
+ const [otp, setOtp] = useState("");
+ const navigate = useNavigate();
+ const toast = useToast();
+
+ const handleOtpChange = (value) => {
+ setOtp(value);
+ };
+
+ // const handleLogin = () => {
+ // const email = localStorage.getItem("email");
+ // const phoneNumber = localStorage.getItem("phoneNumber");
+
+ // if (email === "wdi@gmail.com" && phoneNumber === "9988776655" && otp === "1234") {
+
+ // setTimeout(() => {
+ // toast({
+ // render: () => (
+ //
+ // ),
+ // });
+
+ // Cookies.set("isAuthenticated", true, { expires: 7 });
+ // navigate("/*");
+ // }, 2000); // 2-second delay
+ // } else {
+ // setTimeout(() => {
+ // toast({
+ // render: () => (
+ //
+ // ),
+ // });
+
+ // reset();
+ // navigate("/login-phone-number");
+ // }, 2000); // 2-second delay
+ // }
+ // };
+
+ return (
+
+
+
+
+
+
+ Enter OTP
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi. Aliquam in hendrerit urna. Pellentesque sit amet sapien fringilla, mattis ligula consectetur.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ navigate("/ekyc")} />
+
+
+
+
+
+
+
+
+ );
+};
+
+export default RegisterOtp;
diff --git a/src/Pages/Onboarding/WelcomeToOptifii.jsx b/src/Pages/Onboarding/WelcomeToOptifii.jsx
index bea2171..7d94fb0 100644
--- a/src/Pages/Onboarding/WelcomeToOptifii.jsx
+++ b/src/Pages/Onboarding/WelcomeToOptifii.jsx
@@ -234,13 +234,13 @@ const WelcomeToOptifii = () => {
navigate("/register-otp")}
w={"300px"} title={"Register with us"} />
Already have an account?
navigate("/ekyc")}
+ onClick={onOpen}
_hover={{ opacity: 0.8 }}
px={0}
fontSize={"xs"}
diff --git a/src/Routes/Nav.js b/src/Routes/Nav.js
index 608a5b2..76b7883 100644
--- a/src/Routes/Nav.js
+++ b/src/Routes/Nav.js
@@ -20,7 +20,7 @@ export const nav = [
{
title: "Home",
Icon: FiHome,
- path: "/",
+ path: "/home",
submenu: [
{
title: "Report",
diff --git a/src/Routes/Routes.js b/src/Routes/Routes.js
index 72453f9..4c59580 100644
--- a/src/Routes/Routes.js
+++ b/src/Routes/Routes.js
@@ -15,6 +15,7 @@ import YourWallet from "../Pages/YourWallet/YourWallet";
import BuyVoucherCard from "../Pages/Gifts/SelectDenomination";
import ForWhom from "../Pages/Gifts/ForWhom";
import WelcomeToOptifiiComponent from "../Pages/Onboarding/WelcomeFrame";
+import RequestReimbursement from "../Pages/Expenses/RequestReimbursement";
@@ -35,4 +36,5 @@ export const RouteLink = [
{ path: "/buy-voucher-card", Component: BuyVoucherCard },
{ path: "/for-whom-card", Component: ForWhom },
{ path: "/log-in", Component: WelcomeToOptifiiComponent },
+ { path: "/request-reimbursement", Component: RequestReimbursement },
];