diff --git a/package-lock.json b/package-lock.json index 7fd1e3c..bb6330e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,10 +18,12 @@ "axios": "^1.7.2", "bootstrap": "5.3.3", "chart.js": "^4.4.3", + "dayjs": "^1.11.13", "dotenv": "^16.4.5", "framer-motion": "^11.5.5", "js-cookie": "^3.0.5", "libphonenumber-js": "^1.11.8", + "multiselect-react-dropdown": "^2.0.25", "react": "^18.2.0", "react-apexcharts": "^1.4.1", "react-beautiful-dnd": "^13.1.1", @@ -36,6 +38,7 @@ "redux-persist": "^6.0.0", "redux-persist-transform-encrypt": "^5.1.1", "uuid": "^10.0.0", + "vanilla-tilt": "^1.8.1", "xlsx": "^0.18.5", "yup": "^1.4.0" }, @@ -3196,6 +3199,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -4839,6 +4847,14 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/multiselect-react-dropdown": { + "version": "2.0.25", + "resolved": "https://registry.npmjs.org/multiselect-react-dropdown/-/multiselect-react-dropdown-2.0.25.tgz", + "integrity": "sha512-z8kUSyBNOuV7vn4Dk35snzXWtIfTdSEEXhgDdLMvOmR+xJFx35vc1voUlSuOvrk3khb+hXC219Qs9szOvNm25Q==", + "peerDependencies": { + "react": "^16.7.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -6330,6 +6346,11 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/vanilla-tilt": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vanilla-tilt/-/vanilla-tilt-1.8.1.tgz", + "integrity": "sha512-hPB1XUsnh+SIeVSW2beb5RnuFxz4ZNgxjGD78o52F49gS4xaoLeEMh9qrQnJrnEn/vjjBI7IlxrrXmz4tGV0Kw==" + }, "node_modules/vite": { "version": "5.4.8", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", diff --git a/package.json b/package.json index 8577bf4..a1783f8 100644 --- a/package.json +++ b/package.json @@ -20,10 +20,12 @@ "axios": "^1.7.2", "bootstrap": "5.3.3", "chart.js": "^4.4.3", + "dayjs": "^1.11.13", "dotenv": "^16.4.5", "framer-motion": "^11.5.5", "js-cookie": "^3.0.5", "libphonenumber-js": "^1.11.8", + "multiselect-react-dropdown": "^2.0.25", "react": "^18.2.0", "react-apexcharts": "^1.4.1", "react-beautiful-dnd": "^13.1.1", @@ -38,6 +40,7 @@ "redux-persist": "^6.0.0", "redux-persist-transform-encrypt": "^5.1.1", "uuid": "^10.0.0", + "vanilla-tilt": "^1.8.1", "xlsx": "^0.18.5", "yup": "^1.4.0" }, diff --git a/src/Contexts/GlobalStateProvider.jsx b/src/Contexts/GlobalStateProvider.jsx index 9bfc221..8c24fae 100644 --- a/src/Contexts/GlobalStateProvider.jsx +++ b/src/Contexts/GlobalStateProvider.jsx @@ -17,9 +17,9 @@ import { SiBookstack } from "react-icons/si"; import Food from "../assets/icons/Food.png"; import Fuel from "../assets/icons/Fuel.png"; import Gift from "../assets/icons/gift.png"; -import books from "../assets/icons/bookStack.png" -import telecom from "../assets/icons/telecom.png" -import gadget from "../assets/icons/gadget.png" +import books from "../assets/icons/bookStack.png"; +import telecom from "../assets/icons/telecom.png"; +import gadget from "../assets/icons/gadget.png"; const getRandomDate = (start, end) => { const date = new Date( start.getTime() + Math.random() * (end.getTime() - start.getTime()) @@ -293,6 +293,7 @@ const GlobalStateProvider = ({ children }) => { }, ]); + const [reportsHistory, setReportsHistory] = useState([ { id: 1, @@ -1470,159 +1471,167 @@ const GlobalStateProvider = ({ children }) => { const [digital, setDigital] = useState([ { id: 1, - "orderid": "#451245", - "laodStatus": "Fully Loaded", - "dateTime": "10 June 2024, 10am", - "totalvaluation": "₹ 70,000", - "activationStatus": "Active", - "CardDeliveryStatus": "Delivered", - "quantity": "500" + orderid: "#451245", + laodStatus: "Fully Loaded", + dateTime: "10 June 2024, 10am", + totalvaluation: "₹ 70,000", + activationStatus: "Active", + CardDeliveryStatus: "Delivered", + quantity: "500", }, { id: 2, - "orderid": "#451245", - "laodStatus": "Fully Loaded", - "dateTime": "10 June 2024, 10am", - "totalvaluation": "₹ 70,000", - "activationStatus": "Active", - "CardDeliveryStatus": "Not Delivered", - "quantity": "500" + orderid: "#451245", + laodStatus: "Fully Loaded", + dateTime: "10 June 2024, 10am", + totalvaluation: "₹ 70,000", + activationStatus: "Active", + CardDeliveryStatus: "Not Delivered", + quantity: "500", }, { id: 3, - "orderid": "#451245", - "laodStatus": "Fully Loaded", - "dateTime": "10 June 2024, 10am", - "totalvaluation": "₹ 70,000", - "activationStatus": "Activate", - "CardDeliveryStatus": "Delivered", - "quantity": "500" + orderid: "#451245", + laodStatus: "Fully Loaded", + dateTime: "10 June 2024, 10am", + totalvaluation: "₹ 70,000", + activationStatus: "Activate", + CardDeliveryStatus: "Delivered", + quantity: "500", }, { id: 3, - "orderid": "#451245", - "laodStatus": "Fully Loaded", - "dateTime": "10 June 2024, 10am", - "totalvaluation": "₹ 70,000", - "activationStatus": "Partially Active", - "CardDeliveryStatus": "Partially Delivered", - "quantity": "500" - + orderid: "#451245", + laodStatus: "Fully Loaded", + dateTime: "10 June 2024, 10am", + totalvaluation: "₹ 70,000", + activationStatus: "Partially Active", + CardDeliveryStatus: "Partially Delivered", + quantity: "500", }, { id: 4, - "orderid": "#451245", - "laodStatus": "Fully Loaded", - "dateTime": "10 June 2024, 10am", - "totalvaluation": "₹ 70,000", - "activationStatus": "Active", - "CardDeliveryStatus": "Not Delivered", - "quantity": "500" + orderid: "#451245", + laodStatus: "Fully Loaded", + dateTime: "10 June 2024, 10am", + totalvaluation: "₹ 70,000", + activationStatus: "Active", + CardDeliveryStatus: "Not Delivered", + quantity: "500", }, { id: 5, - "orderid": "#451245", - "laodStatus": "Fully Loaded", - "dateTime": "10 June 2024, 10am", - "totalvaluation": "₹ 70,000", - "activationStatus": "Partially Active", - "CardDeliveryStatus": "Not Delivered", - "quantity": "500" + orderid: "#451245", + laodStatus: "Fully Loaded", + dateTime: "10 June 2024, 10am", + totalvaluation: "₹ 70,000", + activationStatus: "Partially Active", + CardDeliveryStatus: "Not Delivered", + quantity: "500", }, { id: 6, - "orderid": "#451245", - "laodStatus": "Fully Loaded", - "dateTime": "10 June 2024, 10am", - "totalvaluation": "₹ 70,000", - "activationStatus": "Active", - "CardDeliveryStatus": "Delivered", - "quantity": "500" + orderid: "#451245", + laodStatus: "Fully Loaded", + dateTime: "10 June 2024, 10am", + totalvaluation: "₹ 70,000", + activationStatus: "Active", + CardDeliveryStatus: "Delivered", + quantity: "500", }, { id: 7, - "orderid": "#451245", - "laodStatus": "Fully Loaded", - "dateTime": "10 June 2024, 10am", - "totalvaluation": "₹ 70,000", - "activationStatus": "Activate", - "CardDeliveryStatus": "Delivered", - "quantity": "500" + orderid: "#451245", + laodStatus: "Fully Loaded", + dateTime: "10 June 2024, 10am", + totalvaluation: "₹ 70,000", + activationStatus: "Activate", + CardDeliveryStatus: "Delivered", + quantity: "500", }, { id: 8, - "orderid": "#451245", - "laodStatus": "Fully Loaded", - "dateTime": "10 June 2024, 10am", - "totalvaluation": "₹ 70,000", - "activationStatus": "Activate", - "CardDeliveryStatus": "Delivered", - "quantity": "500" + orderid: "#451245", + laodStatus: "Fully Loaded", + dateTime: "10 June 2024, 10am", + totalvaluation: "₹ 70,000", + activationStatus: "Activate", + CardDeliveryStatus: "Delivered", + quantity: "500", }, - ]) + ]); - // supprt and ticket + // supprt and ticket const [SupportAndTicket, setSupportAndTicket] = useState([ { TicketID: 124589, - Subject: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", + Subject: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", Status: "On hold", LastUpdate: "Jun 10, 2024", Support: "Reethik thota", }, { TicketID: 124589, - Subject: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", + Subject: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", Status: "On hold", LastUpdate: "Jun 10, 2024", Support: "Reethik thota", }, { TicketID: 124589, - Subject: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", + Subject: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", Status: "On hold", LastUpdate: "Jun 10, 2024", Support: "Reethik thota", }, { TicketID: 124589, - Subject: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", + Subject: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", Status: "On hold", LastUpdate: "Jun 10, 2024", Support: "Reethik thota", }, { TicketID: 124589, - Subject: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", + Subject: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", Status: "Inactive", LastUpdate: "Jun 10, 2024", Support: "Reethik thota", }, { TicketID: 124589, - Subject: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", + Subject: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", Status: "Inactive", LastUpdate: "Jun 10, 2024", Support: "Reethik thota", }, { TicketID: 124589, - Subject: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", + Subject: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", Status: "In progress", LastUpdate: "Jun 10, 2024", Support: "Reethik thota", }, { TicketID: 124589, - Subject: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", + Subject: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", Status: "In progress", LastUpdate: "Jun 10, 2024", Support: "Reethik thota", }, { TicketID: 124589, - Subject: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", + Subject: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi.", Status: "In progress", LastUpdate: "Jun 10, 2024", Support: "Reethik thota", @@ -1634,111 +1643,116 @@ const GlobalStateProvider = ({ children }) => { id: 1, ReportName: "Advance expense report 2024", ReportBy: { - profImage: "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", + profImage: + "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", profName: "Raju", }, ReportAmount: "₹ 50000", DateTime: "10 June, 2924 10 am", Approver: "Reethik thota", Disburser: "Manav sain", - Action: "View" + Action: "View", }, { id: 2, ReportName: "Advance expense report 2024", ReportBy: { - profImage: "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", + profImage: + "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", profName: "Raju", }, ReportAmount: "₹ 50000", DateTime: "10 June, 2924 10 am", Approver: "Reethik thota", Disburser: "Manav sain", - Action: "View" + Action: "View", }, { id: 3, ReportName: "Advance expense report 2024", ReportBy: { - profImage: "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", + profImage: + "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", profName: "Raju", }, ReportAmount: "₹ 50000", DateTime: "10 June, 2924 10 am", Approver: "Reethik thota", Disburser: "Manav sain", - Action: "View" + Action: "View", }, { id: 4, ReportName: "Advance expense report 2024", ReportBy: { - profImage: "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", + profImage: + "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", profName: "Raju", }, ReportAmount: "₹ 50000", DateTime: "10 June, 2924 10 am", Approver: "Reethik thota", Disburser: "Manav sain", - Action: "View" + Action: "View", }, { id: 5, ReportName: "Advance expense report 2024", ReportBy: { - profImage: "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", + profImage: + "https://images.pexels.com/photos/771742/pexels-photo-771742.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1", profName: "Raju", }, ReportAmount: "₹ 50000", DateTime: "10 June, 2924 10 am", Approver: "Reethik thota", Disburser: "Manav sain", - Action: "View" + Action: "View", }, - ]) + ]); const [AdvanceExpenseRequestView, setAdvanceExpenseRequestView] = useState([ { - "DateTime": "10 June, 2924 10 am", - "Merchant": "Dine in", - "Category": "Food", - "Paymentmode": "Expense card", - "ReimburseAmount": "₹ 50000", - "Bills": "", - "Disburser": "Manav sain", - "Action": "" + DateTime: "10 June, 2924 10 am", + Merchant: "Dine in", + Category: "Food", + Paymentmode: "Expense card", + ReimburseAmount: "₹ 50000", + Bills: "", + Disburser: "Manav sain", + Action: "", }, { - "DateTime": "10 June, 2924 10 am", - "Merchant": "Airtel postpaid", - "Category": "Telecom", - "Paymentmode": "Expense card", - "ReimburseAmount": "₹ 50000", - "Bills": "", - "Disburser": "Manav sain", - "Action": "" + DateTime: "10 June, 2924 10 am", + Merchant: "Airtel postpaid", + Category: "Telecom", + Paymentmode: "Expense card", + ReimburseAmount: "₹ 50000", + Bills: "", + Disburser: "Manav sain", + Action: "", }, { - "DateTime": "10 June, 2924 10 am", - "Merchant": "Lorem ipsme", - "Category": "Fuel", - "Paymentmode": "Expense card", - "ReimburseAmount": "₹ 50000", - "Bills": "", - "Disburser": "Manav sain", - "Action": "" + DateTime: "10 June, 2924 10 am", + Merchant: "Lorem ipsme", + Category: "Fuel", + Paymentmode: "Expense card", + ReimburseAmount: "₹ 50000", + Bills: "", + Disburser: "Manav sain", + Action: "", }, { - "DateTime": "10 June, 2924 10 am", - "Merchant": "Dine in", - "Category": "Food", - "Paymentmode": "Expense card", - "ReimburseAmount": "₹ 50000", - "Bills": "", - "Disburser": "Manav sain", - "Action": "" + DateTime: "10 June, 2924 10 am", + Merchant: "Dine in", + Category: "Food", + Paymentmode: "Expense card", + ReimburseAmount: "₹ 50000", + Bills: "", + Disburser: "Manav sain", + Action: "", }, - ]) + ]); const [ApplicationStatus, setApplicationStatus] = useState([ { @@ -1851,101 +1865,167 @@ const GlobalStateProvider = ({ children }) => { }, ]); - const [walletProgram, setWalletProgram] = useState( - [ - { - id: 1, - walletName: [{ name: "Food", icon: Food }], - WalletType: "Prefilled", - department: "sales", - status: "Active", - WalletAmount: "₹ 50,000", - CreatedOn: "Jan 12, 2022", - CreatedBy: "Jenny wilson" - }, - { - id: 2, - walletName: [{ name: "Fuel", icon: Fuel }], - WalletType: "Prefilled", - department: "sales", - status: "Active", - WalletAmount: "₹ 50,000", - CreatedOn: "Jan 12, 2022", - CreatedBy: "Jenny wilson" - }, - { - id: 3, - walletName: [{ name: "Gift", icon: Gift }], - WalletType: "Prefilled", - department: "sales", - status: "Active", - WalletAmount: "₹ 50,000", - CreatedOn: "Jan 12, 2022", - CreatedBy: "Jenny wilson" - }, - { - id: 4, - walletName: [{ name: "Telecom", icon: telecom }], - WalletType: "Prefilled", - department: "sales", - status: "Saved as draft", - WalletAmount: "₹ 50,000", - CreatedOn: "Jan 12, 2022", - CreatedBy: "Jenny wilson" - }, - { - id: 5, - walletName: [{ name: "Books & periodicals", icon: books }], - WalletType: "Prefilled", - department: "sales", - status: "Active", - WalletAmount: "₹ 50,000", - CreatedOn: "Jan 12, 2022", - CreatedBy: "Jenny wilson" - }, - { - id: 6, - walletName: [{ name: "Learning & development", icon: books }], - WalletType: "Prefilled", - department: "sales", - status: "Active", - WalletAmount: "₹ 50,000", - CreatedOn: "Jan 12, 2022", - CreatedBy: "Jenny wilson" - }, - { - id: 7, - walletName: [{ name: "Gadget & equipment", icon: gadget }], - WalletType: "Prefilled", - department: "sales", - status: "Active", - WalletAmount: "₹ 50,000", - CreatedOn: "Jan 12, 2022", - CreatedBy: "Jenny wilson" - }, - { - id: 8, - walletName: [{ name: "Telecom", icon: telecom }], - WalletType: "Prefilled", - department: "sales", - status: "Pending", - WalletAmount: "₹ 50,000", - CreatedOn: "Jan 12, 2022", - CreatedBy: "Jenny wilson" - }, - { - id: 9, - walletName: [{ name: "Food", icon: Food }], - WalletType: "Prefilled", - department: "sales", - status: "Pending", - WalletAmount: "₹ 50,000", - CreatedOn: "Jan 12, 2022", - CreatedBy: "Jenny wilson" - }, - ] + const [walletProgram, setWalletProgram] = useState([ + { + id: 1, + walletName: [{ name: "Food", icon: Food }], + WalletType: "Prefilled", + department: "sales", + status: "Active", + WalletAmount: "₹ 50,000", + CreatedOn: "Jan 12, 2022", + CreatedBy: "Jenny wilson", + }, + { + id: 2, + walletName: [{ name: "Fuel", icon: Fuel }], + WalletType: "Prefilled", + department: "sales", + status: "Active", + WalletAmount: "₹ 50,000", + CreatedOn: "Jan 12, 2022", + CreatedBy: "Jenny wilson", + }, + { + id: 3, + walletName: [{ name: "Gift", icon: Gift }], + WalletType: "Prefilled", + department: "sales", + status: "Active", + WalletAmount: "₹ 50,000", + CreatedOn: "Jan 12, 2022", + CreatedBy: "Jenny wilson", + }, + { + id: 4, + walletName: [{ name: "Telecom", icon: telecom }], + WalletType: "Prefilled", + department: "sales", + status: "Saved as draft", + WalletAmount: "₹ 50,000", + CreatedOn: "Jan 12, 2022", + CreatedBy: "Jenny wilson", + }, + { + id: 5, + walletName: [{ name: "Books & periodicals", icon: books }], + WalletType: "Prefilled", + department: "sales", + status: "Active", + WalletAmount: "₹ 50,000", + CreatedOn: "Jan 12, 2022", + CreatedBy: "Jenny wilson", + }, + { + id: 6, + walletName: [{ name: "Learning & development", icon: books }], + WalletType: "Prefilled", + department: "sales", + status: "Active", + WalletAmount: "₹ 50,000", + CreatedOn: "Jan 12, 2022", + CreatedBy: "Jenny wilson", + }, + { + id: 7, + walletName: [{ name: "Gadget & equipment", icon: gadget }], + WalletType: "Prefilled", + department: "sales", + status: "Active", + WalletAmount: "₹ 50,000", + CreatedOn: "Jan 12, 2022", + CreatedBy: "Jenny wilson", + }, + { + id: 8, + walletName: [{ name: "Telecom", icon: telecom }], + WalletType: "Prefilled", + department: "sales", + status: "Pending", + WalletAmount: "₹ 50,000", + CreatedOn: "Jan 12, 2022", + CreatedBy: "Jenny wilson", + }, + { + id: 9, + walletName: [{ name: "Food", icon: Food }], + WalletType: "Prefilled", + department: "sales", + status: "Pending", + WalletAmount: "₹ 50,000", + CreatedOn: "Jan 12, 2022", + CreatedBy: "Jenny wilson", + }, + ]); - ); + const [voucher, setVoucher] = useState([ + { + id: 1, + DateTime: "Jan 12, 2022, 10 am", + EmployeesDepartment: "250 employees", + TotalAmount: "₹ 50,000", + OrderStatus: "Scheduled", + }, + { + id: 2, + DateTime: "Jan 12, 2022, 10 am", + EmployeesDepartment: "250 employees", + TotalAmount: "₹ 50,000", + OrderStatus: "Scheduled", + }, + { + id: 3, + DateTime: "Jan 12, 2022, 10 am", + EmployeesDepartment: "250 employees", + TotalAmount: "₹ 50,000", + OrderStatus: "Scheduled", + }, + { + id: 4, + DateTime: "Jan 12, 2022, 10 am", + EmployeesDepartment: "250 employees", + TotalAmount: "₹ 50,000", + OrderStatus: "Scheduled", + }, + { + id: 5, + DateTime: "Jan 12, 2022, 10 am", + EmployeesDepartment: "250 employees", + TotalAmount: "₹ 50,000", + OrderStatus: "Completed", + }, + { + id: 6, + DateTime: "Jan 12, 2022, 10 am", + EmployeesDepartment: "250 employees", + TotalAmount: "₹ 50,000", + OrderStatus: "Completed", + }, + { + id: 7, + DateTime: "Jan 12, 2022, 10 am", + EmployeesDepartment: "250 employees", + TotalAmount: "₹ 50,000", + OrderStatus: "Completed", + }, + { + id: 8, + DateTime: "Jan 12, 2022, 10 am", + EmployeesDepartment: "250 employees", + TotalAmount: "₹ 50,000", + OrderStatus: "Completed", + }, + { + id: 9, + DateTime: "Jan 12, 2022, 10 am", + EmployeesDepartment: "250 employees", + TotalAmount: "₹ 50,000", + OrderStatus: "Completed", + }, + ]); + + + // Recent report const [recentReports, setRecentReports] = useState([ @@ -2086,6 +2166,7 @@ const GlobalStateProvider = ({ children }) => { setEmployeePermissions, reimbursementStatus, setReimbursementStatus, + voucher, advanceStatus, setAdvanceStatus, digital, @@ -2099,10 +2180,9 @@ const GlobalStateProvider = ({ children }) => { walletProgram, SupportAndTicket, setSupportAndTicket, - recentReports, - setRecentReports, - recentTransaction, - setRecentTransaction, + + recentReports, setRecentReports, + recentTransaction, setRecentTransaction }} > {children} diff --git a/src/Pages/OptiFiiExpense/wallet/CreateWallet.jsx b/src/Pages/OptiFiiExpense/wallet/CreateWallet.jsx index 4095fe3..9c8445a 100644 --- a/src/Pages/OptiFiiExpense/wallet/CreateWallet.jsx +++ b/src/Pages/OptiFiiExpense/wallet/CreateWallet.jsx @@ -1,32 +1,65 @@ -import React from "react"; +import React, { useState } from "react"; +import { useForm } from "react-hook-form"; import { - Box, - Step, - StepDescription, - StepIcon, - StepIndicator, - StepNumber, - StepSeparator, - StepStatus, - StepTitle, Stepper, - useSteps, + Step, + StepIndicator, + StepStatus, + StepIcon, + StepNumber, + Box, + StepTitle, + StepDescription, + StepSeparator, + Button, + FormControl, + FormLabel, + Input, + Heading, + Text, } from "@chakra-ui/react"; +import WalletPolicy from "./WalletPolicy"; +import { OPACITY_ON_LOAD } from "../../../Layout/animations"; const steps = [ - { title: "Wallet policy", description: "Wallet policy" }, - { title: "Approval policy", description: "Approval policy" }, - { title: "Submission policy", description: "Submission policy" }, - { title: "Define budget", description: "Define budget" }, + { title: "Wallet policy", description: "Contact Info" }, + { title: "Approval policy", description: "Date & Time" }, + { title: "Submission policy", description: "Select Rooms" }, + { title: "Define budget", description: "Select Rooms" }, ]; -const CreateWallet = () => { - const { activeStep } = useSteps({ - index: 1, - count: steps.length, - }); +function CreateWallet() { + const [activeStep, setActiveStep] = useState(0); + const { + register, + handleSubmit, + formState: { errors }, + } = useForm(); + const [formData, setFormData] = useState({}); + + const nextStep = () => { + if (activeStep < steps.length - 1) { + setActiveStep(activeStep + 1); + } + }; + + const prevStep = () => { + if (activeStep > 0) { + setActiveStep(activeStep - 1); + } + }; + + const onSubmit = (data) => { + setFormData({ ...formData, ...data }); + if (activeStep === steps.length - 1) { + console.log("Form Submitted:", formData); + } else { + nextStep(); + } + }; + return ( - + {steps.map((step, index) => ( @@ -34,22 +67,64 @@ const CreateWallet = () => { } incomplete={} - active={} + active={} /> {step.title} - {step.description} + {/* {step.description} */} ))} + +
+ {activeStep === 0 && ( + + + Create wallet policy + + + + + )} + {activeStep === 1 && ( + + {/* + Date & Time + + */} + + )} + {activeStep === 2 && ( + + {/* + Select Room + + */} + + )} + + + + + +
); -}; +} export default CreateWallet; diff --git a/src/Pages/OptiFiiExpense/wallet/OutOfPoket.jsx b/src/Pages/OptiFiiExpense/wallet/OutOfPoket.jsx new file mode 100644 index 0000000..a3eed27 --- /dev/null +++ b/src/Pages/OptiFiiExpense/wallet/OutOfPoket.jsx @@ -0,0 +1,371 @@ +import { + Box, + FormControl, + FormLabel, + Input, + Menu, + MenuButton, + MenuItem, + MenuList, + Select, + Tag, + TagCloseButton, + TagLabel, + Textarea, + Wrap, + WrapItem, + Button, + useToast, + Checkbox, + Stack, + CheckboxGroup, + Text, + RadioGroup, + Radio, +} from "@chakra-ui/react"; +import { AddIcon, ChevronDownIcon } from "@chakra-ui/icons"; +import React, { useState } from "react"; +import dayjs from "dayjs"; +import { CiCircleInfo } from "react-icons/ci"; + +const OutOfPoket = ({ register, formState }) => { + const [selectedDepartments, setSelectedDepartments] = useState([]); + const [selectedTimes, setSelectedTimes] = useState([]); + const [transaction, setTransaction] = useState([]); + const [transactionRule, setTransactionRule] = useState("none"); + const [categories, setCategories] = useState(["Food", "Fuel"]); + const [selectedCategories, setSelectedCategories] = useState([]); + const [inputValue, setInputValue] = useState(""); + + const toast = useToast(); + + const transactionTags = ["Food", "Fuel"]; + + const departments = ["Finance", "HR", "Marketing", "Engineering"]; + const options = [ + { + label: "An hour from now", + value: dayjs().add(1, "hour").format("ddd, MMM D, h:mm A"), + }, + { + label: "Tomorrow", + value: dayjs() + .add(1, "day") + .set("hour", 21) + .minute(0) + .format("ddd, MMM D, h:mm A"), + }, + { + label: "Next week", + value: dayjs() + .add(7, "day") + .set("hour", 21) + .minute(0) + .format("ddd, MMM D, h:mm A"), + }, + ]; + + const availableCategories = [ + "Entertainment", + "Groceries", + "Fuel", + "Shopping", + "Food", + "Utilities", + ]; + + const handleCategoryRemove = (categoryToRemove) => { + setCategories( + categories.filter((category) => category !== categoryToRemove) + ); + }; + + const handleCategoryAdd = (categoryToAdd) => { + if (!categories.includes(categoryToAdd)) { + setCategories([...categories, categoryToAdd]); + } + }; + + const addCategory = () => { + if (inputValue && !selectedCategories.includes(inputValue)) { + setSelectedCategories([...selectedCategories, inputValue]); + setInputValue(""); + } + }; + + const removeCategory = (categoryToRemove) => { + setSelectedCategories( + selectedCategories.filter((category) => category !== categoryToRemove) + ); + }; + + const handleSelect = (time) => { + if (!selectedTimes.includes(time)) { + setSelectedTimes([...selectedTimes, time]); + } else { + toast({ + title: "Duplicate entry", + description: "This time has already been selected.", + status: "warning", + duration: 2000, + isClosable: true, + }); + } + }; + + const handleRemoveTags = (time) => { + setSelectedTimes(selectedTimes.filter((t) => t !== time)); + }; + + const handleSelectChangeTags = (event) => { + const value = event.target.value; + if (value && !transactionTags.includes(value)) { + setSelectedDepartments([...transactionTags, value]); + } + }; + + const handleRemove = (time) => { + setSelectedTimes(selectedTimes.filter((t) => t !== time)); + }; + + const handleSelectChange = (event) => { + const value = event.target.value; + if (value && !selectedDepartments.includes(value)) { + setSelectedDepartments([...selectedDepartments, value]); + } + }; + + const handleRemoveTag = (department) => { + setSelectedDepartments(selectedDepartments.filter((d) => d !== department)); + }; + + return ( +
+ + + + + Wallet name + + + + + + + Description + +