diff --git a/package.json b/package.json index e730071..f211984 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", + "antd": "^5.11.1", "axios": "^0.24.0", "date-fns": "^2.27.0", "jsonwebtoken": "^8.5.1", @@ -18,7 +19,7 @@ "react": "^17.0.2", "react-credit-cards": "^0.8.3", "react-dom": "^17.0.2", - "react-router-dom": "^6.0.2", + "react-router-dom": "6.21.0", "react-scripts": "4.0.3", "web-vitals": "^1.0.1" }, diff --git a/src/App.js b/src/App.js index 3fe2a78..451ad02 100644 --- a/src/App.js +++ b/src/App.js @@ -1,310 +1,8 @@ -import React, { useEffect, useState, Fragment } from "react"; -import jwt from "jsonwebtoken"; -import { - BrowserRouter as Router, - Routes, - Route, - Navigate, -} from "react-router-dom"; -import HomePage from "./components/HomePage/HomePage"; -import SignIn from "./components/SignIn/SignIn"; -import SignUp from "./components/SignUp/SignUp"; -import Page404 from "./components/Page404/Page404"; -import PatientDash from "./components/Dashboards/PatientDash/PatientDash"; -import ViewLocation from "./components/Dashboards/PatientDash/Tabs/ViewLocation"; -import MyAppointments from "./components/Dashboards/PatientDash/Tabs/MyAppointments"; -import BookAppointment from "./components/Dashboards/PatientDash/Tabs/BookAppointment"; -import MakePaymentPatinet from "./components/Dashboards/PatientDash/Tabs/MakePayment"; -import CardPaymentPatient from "./components/Dashboards/PatientDash/Tabs/CardPayment"; -import UpiPaymentPatient from "./components/Dashboards/PatientDash/Tabs/UpiPayment"; -import Prescriptions from "./components/Dashboards/PatientDash/Tabs/Prescriptions"; -import Feedback from "./components/Dashboards/PatientDash/Tabs/Feedback"; -import StaffDash from "./components/Dashboards/StaffDash/StaffDash"; -import BookAppointmentStaff from "./components/Dashboards/StaffDash/Tabs/BookAppointment"; -import CancelAppointment from "./components/Dashboards/StaffDash/Tabs/CancelAppointment"; -import MakePaymentStaff from "./components/Dashboards/StaffDash/Tabs/MakePayment"; -import CardPaymentStaff from "./components/Dashboards/StaffDash/Tabs/CardPayment"; -import UpiPaymentStaff from "./components/Dashboards/StaffDash/Tabs/UpiPayment"; -import CashPayment from "./components/Dashboards/StaffDash/Tabs/CashPayment"; -import DoctorDash from "./components/Dashboards/DoctorDash/DoctorDash"; -import Appointments from "./components/Dashboards/DoctorDash/Tabs/Appointments"; -import UploadPrescription from "./components/Dashboards/DoctorDash/Tabs/UploadPrescription"; -import AdminDash from "./components/Dashboards/AdminDash/AdminDash"; -import DocList from "./components/Dashboards/AdminDash/Tabs/DocList"; -import AddNew from "./components/Dashboards/AdminDash/Tabs/AddNew"; -import GenerateStats from "./components/Dashboards/AdminDash/Tabs/GenerateStats"; -import VerifySignUp from "./components/Dashboards/AdminDash/Tabs/VerifySignUp"; -import Feedbacks from "./components/Dashboards/AdminDash/Tabs/Feedbacks"; - -export const AuthContext = React.createContext(); +import MyRouter from "./Router"; function App() { - const [userType, setUserType] = useState( - jwt.decode(localStorage.getItem("accessToken"))?.userType - ); - useEffect(() => { - const token = localStorage.getItem("accessToken"); - const payload = token && jwt.decode(token); - const userTyp = payload && payload.userType; - setUserType(userTyp && userTyp); - }, []); - return ( - - - } /> - - ) : ( - - - - ) - } - /> - : - } - /> - {/*----------> Admin Routes <------------- */} - {userType === "admin" && ( - - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - - )} - {/*----------> Doctor Routes <------------- */} - {userType === "doctor" && ( - - - - - } - /> - - - - } - /> - - - - } - /> - - )} - {/*----------> Patient Routes <------------- */} - {userType === "patient" && ( - - - - - } - /> - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - - )} - {/*----------> Staff Routes <------------- */} - {userType === "staff" && ( - - - - - } - /> - - - - } - /> - - - - } - /> - - - - } - /> - } - /> - } - /> - } - /> - - )} - {/*----------> Unknown Routes <------------- */} - - - - } - /> - - + ); } diff --git a/src/Router/adminRouter.js b/src/Router/adminRouter.js new file mode 100644 index 0000000..039162d --- /dev/null +++ b/src/Router/adminRouter.js @@ -0,0 +1,50 @@ + +import { AuthContext } from '.'; +import DocList from '../pages/AdminDash/Tabs/DocList'; +import AddNew from '../pages/AdminDash/Tabs/AddNew'; +import GenerateStats from '../pages/AdminDash/Tabs/GenerateStats'; +import Feedbacks from '../pages/AdminDash/Tabs/Feedbacks'; +import VerifySignUp from '../pages/AdminDash/Tabs/VerifySignUp'; +import AdminDash from '../pages/AdminDash'; + + +const adminRouter = (setUserType) => [ + { + path: '/dashboard/admin', + element: + + + }, + { + path: `/dashboard/admin/doctors'-list`, + element: + + + }, + { + path: `/dashboard/admin/doctors'-list/add-new`, + element: + + + }, + { + path: `/dashboard/admin/generate-stats`, + element: + + + }, + { + path: `/dashboard/admin/verify-signup`, + element: + + + }, + { + path: `/dashboard/admin/generate-stats/feedbacks`, + element: + + + }, +] + +export default adminRouter \ No newline at end of file diff --git a/src/Router/doctorRouter.js b/src/Router/doctorRouter.js new file mode 100644 index 0000000..21c3c78 --- /dev/null +++ b/src/Router/doctorRouter.js @@ -0,0 +1,28 @@ +import { AuthContext } from '.'; + +import Appointments from '../pages/DoctorDash/Tabs/Appointments'; +import UploadPrescription from '../pages/DoctorDash/Tabs/UploadPrescription'; +import DoctorDash from '../pages/DoctorDash/DoctorDash'; + +const doctorRouter = (setUserType) => [ + { + path: '/dashboard/doctor', + element: + + + }, + { + path: `/dashboard/doctor/appointments`, + element: + + + }, + { + path: `/dashboard/doctor/upload-prescription`, + element: + + + } +] + +export default doctorRouter \ No newline at end of file diff --git a/src/Router/index.js b/src/Router/index.js new file mode 100644 index 0000000..9239763 --- /dev/null +++ b/src/Router/index.js @@ -0,0 +1,59 @@ +import React, { useEffect, useState } from 'react'; +import { createBrowserRouter, Navigate, RouterProvider } from 'react-router-dom' +import jwt from "jsonwebtoken"; +import HomePage from '../pages/HomePage/HomePage'; +import SignIn from '../pages/SignIn/SignIn'; +import SignUp from '../pages/SignUp/SignUp'; +import adminRouter from './adminRouter'; +import doctorRouter from './doctorRouter'; +import staffRouter from './staffRouter'; +import patientRouter from './patientRouter'; +import Page404 from '../pages/Page404/Page404'; + +export const AuthContext = React.createContext(); + +export default function MyRouter() { + const [userType, setUserType] = useState( + jwt.decode(localStorage.getItem("accessToken"))?.userType + ); + useEffect(() => { + const token = localStorage.getItem("accessToken"); + const payload = token && jwt.decode(token); + const userTyp = payload && payload.userType; + setUserType(userTyp && userTyp); + }, []); + + const router = createBrowserRouter([ + { + path: '/', + element: + }, + { + path: '/signin', + element: userType ? ( + + ) : ( + + + + ), + }, + { + path: '/signup', + element: userType ? : + }, + userType === "admin" && { ...adminRouter(setUserType) }, + userType === "doctor" && { ...doctorRouter(setUserType) }, + userType === "patient" && { ...patientRouter(setUserType) }, + userType === "staff" && { ...staffRouter(setUserType) }, + { + path: '*', + element: + + , + }, + ]) + return ( + + ) +} diff --git a/src/Router/patientRouter.js b/src/Router/patientRouter.js new file mode 100644 index 0000000..a4dba57 --- /dev/null +++ b/src/Router/patientRouter.js @@ -0,0 +1,68 @@ +import { AuthContext } from '.'; + +import BookAppointment from '../pages/PatientDash/Tabs/BookAppointment'; +import CardPaymentPatient from '../pages/PatientDash/Tabs/CardPayment'; +import Feedback from '../pages/PatientDash/Tabs/Feedback'; +import MakePaymentPatinet from '../pages/PatientDash/Tabs/MakePayment'; +import MyAppointments from '../pages/PatientDash/Tabs/MyAppointments'; +import Prescriptions from '../pages/PatientDash/Tabs/Prescriptions'; +import UpiPaymentPatient from '../pages/PatientDash/Tabs/UpiPayment'; +import ViewLocation from '../pages/PatientDash/Tabs/ViewLocation'; +import PatientDash from '../pages/PatientDash'; + +const patientRouter = (setUserType) => [ + { + path: '/dashboard/patient', + element: + + + }, + { + path: "/dashboard/patient/view-location", + element: + }, + { + path: "/dashboard/patient/my-appointments", + element: + + + }, + { + path: "/dashboard/patient/book-appointment", + element: + + + }, + { + path: "/dashboard/patient/make-payment", + element: + + + }, + { + path: "/dashboard/patient/make-payment/card-payment", + element: + + + }, + { + path: "/dashboard/patient/make-payment/upi-payment", + element: + + + }, + { + path: "/dashboard/patient/prescriptions", + element: + + + }, + { + path: "/dashboard/patient/feedback", + element: + + + }, +] + +export default patientRouter \ No newline at end of file diff --git a/src/Router/staffRouter.js b/src/Router/staffRouter.js new file mode 100644 index 0000000..91b6272 --- /dev/null +++ b/src/Router/staffRouter.js @@ -0,0 +1,56 @@ +import { AuthContext } from '.'; + +import BookAppointmentStaff from '../pages/StaffDash/Tabs/BookAppointment'; +import CancelAppointment from '../pages/StaffDash/Tabs/CancelAppointment'; +import CardPaymentStaff from '../pages/StaffDash/Tabs/CardPayment'; +import CashPayment from '../pages/StaffDash/Tabs/CashPayment'; +import MakePaymentStaff from '../pages/StaffDash/Tabs/MakePayment'; +import UpiPaymentStaff from '../pages/StaffDash/Tabs/UpiPayment'; +import StaffDash from '../pages/StaffDash/StaffDash'; + +const staffRouter = (setUserType) => [ + { + path: '/dashboard/staff', + element: + + + }, + { + path: `/dashboard/staff/book-appointment`, + element: + + + }, + { + path: `/dashboard/staff/cancel-appointment`, + element: + + + }, + { + path: `/dashboard/staff/make-payment`, + element: + + + }, + { + path: `/dashboard/staff/make-payment/card-payment`, + element: + + + }, + { + path: `/dashboard/staff/make-payment/upi-payment`, + element: + + + }, + { + path: `/dashboard/staff/make-payment/cash-payment`, + element: + + + } +] + +export default staffRouter \ No newline at end of file diff --git a/src/api.js b/src/api.js deleted file mode 100644 index f3c6f45..0000000 --- a/src/api.js +++ /dev/null @@ -1,130 +0,0 @@ -import axios from "axios"; - -const baseUrl = `${process.env.REACT_APP_BASE}/api`; - -axios.interceptors.request.use( - (config) => { - const accessToken = localStorage.getItem("accessToken"); - if (accessToken) { - config.headers["x-auth-token"] = accessToken; - } - return config; - }, - (error) => { - Promise.reject(error); - } -); - -axios.interceptors.response.use( - (response) => { - return response; - }, - (error) => { - const originalRequest = error.config; - let refreshToken = localStorage.getItem("refreshToken"); - if ( - refreshToken && - error.response.status === 401 && - !originalRequest._retry - ) { - originalRequest._retry = true; - return axios - .post(`${baseUrl}/auth/refresh`, { refreshToken: refreshToken }) - .then((res) => { - if (res.status === 200) { - localStorage.setItem("accessToken", res.data.accessToken); - return axios(originalRequest); - } - }); - } - return Promise.reject(error); - } -); - -const api = { - signup: (body) => { - return axios.post(`${baseUrl}/auth/signup`, body); - }, - - signin: (body) => { - return axios.post(`${baseUrl}/auth/signin`, body); - }, - - refreshToken: (body) => { - return axios.post(`${baseUrl}/auth/refresh`, body); - }, - - logout: (body) => { - return axios.delete(`${baseUrl}/auth/logout`, body); - }, - - docList: () => { - return axios.get(`${baseUrl}/doctor/list`); - }, - - addNew: (body) => { - return axios.post(`${baseUrl}/doctor/new`, body); - }, - - updateFee: (body) => { - return axios.post(`${baseUrl}/doctor/fee`, body); - }, - - unverified: () => { - return axios.get(`${baseUrl}/users/unverified`); - }, - - verify: (body) => { - return axios.post(`${baseUrl}/users/unverified/verify`, body); - }, - - reject: (body) => { - return axios.delete(`${baseUrl}/users/unverified/reject`, body); - }, - - generateStats: () => { - return axios.get(`${baseUrl}/generate/stats`); - }, - - patientFeedbacks: () => { - return axios.get(`${baseUrl}/patient/feedbacks`); - }, - - bookAppointment: (body) => { - return axios.post(`${baseUrl}/booking/appointment`, body); - }, - - duePayment: () => { - return axios.get(`${baseUrl}/booking/duepayment`); - }, - - makePayment: (body) => { - return axios.post(`${baseUrl}/booking/payment`, body); - }, - - myAppointments: () => { - return axios.get(`${baseUrl}/patient/appointments`); - }, - - cancelAppointment: (body) => { - return axios.delete(`${baseUrl}/patient/appointments/cancel`, body); - }, - - prescriptions: () => { - return axios.get(`${baseUrl}/patient/prescriptions`); - }, - - writeFeedback: (body) => { - return axios.post(`${baseUrl}/patient/feedback/write`, body); - }, - - deleteFeedback: (body) => { - return axios.post(`${baseUrl}/patient/feedback/delete`, body); - }, - - uploadPrescription: (body) => { - return axios.post(`${baseUrl}/doctor/prescription/upload`, body); - }, -}; - -export default api; diff --git a/src/api/auth.api.js b/src/api/auth.api.js new file mode 100644 index 0000000..d72c4a8 --- /dev/null +++ b/src/api/auth.api.js @@ -0,0 +1,13 @@ +import { request } from './request'; + +const authApi = { + signup: (body) => request("post", `/auth/signup`, body), + + signin: (body) => request("post", `/auth/signin`, body), + + refreshToken: (body) => request("post", `/auth/refresh`, body), + + logout: (body) => request("delete", `/auth/logout`, body), +} + +export default authApi; \ No newline at end of file diff --git a/src/api/booking.api.js b/src/api/booking.api.js new file mode 100644 index 0000000..8a72f45 --- /dev/null +++ b/src/api/booking.api.js @@ -0,0 +1,11 @@ +import { request } from './request'; + +const bookingApi = { + bookAppointment: (body) => request("post", `/booking/appointment`, body), + + duePayment: () => request("get", `/booking/duepayment`), + + makePayment: (body) => request("post", `/booking/payment`, body), +} + +export default bookingApi; \ No newline at end of file diff --git a/src/api/doctor.api.js b/src/api/doctor.api.js new file mode 100644 index 0000000..77349a8 --- /dev/null +++ b/src/api/doctor.api.js @@ -0,0 +1,13 @@ +import { request } from './request'; + +const doctorApi = { + docList: () => request("get", `/doctor/list`), + + addNew: (body) => request("post", `/doctor/new`, body), + + updateFee: (body) => request("post", `/doctor/fee`, body), + + uploadPrescription: (body) => request("post", `/doctor/prescription/upload`, body), +} + +export default doctorApi; \ No newline at end of file diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..4d4aded --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,15 @@ +import authApi from './auth.api' +import bookingApi from './booking.api' +import doctorApi from './doctor.api' +import patientApi from './patient.api' +import userApi from './user.api' + +const API = { + ...authApi, + ...bookingApi, + ...doctorApi, + ...patientApi, + ...userApi, +} + +export default API \ No newline at end of file diff --git a/src/api/patient.api.js b/src/api/patient.api.js new file mode 100644 index 0000000..fdb0c58 --- /dev/null +++ b/src/api/patient.api.js @@ -0,0 +1,17 @@ +import { request } from './request'; + +const patientApi = { + myAppointments: () => request('get', `/patient/appointments`), + + cancelAppointment: (body) => request("delete", `/patient/appointments/cancel`, body), + + prescriptions: () => request("get", `/patient/prescriptions`), + + writeFeedback: (body) => request("post", `/patient/feedback/write`, body), + + deleteFeedback: (body) => request("post", `/patient/feedback/delete`, body), + + patientFeedbacks: () => request("get", `/patient/feedbacks`), +} + +export default patientApi; \ No newline at end of file diff --git a/src/api/request.js b/src/api/request.js new file mode 100644 index 0000000..9d6a4fe --- /dev/null +++ b/src/api/request.js @@ -0,0 +1,64 @@ +import axios from "axios"; + +const baseUrl = `${process.env.REACT_APP_BASE}/api`; + +const axiosInstance = axios.create({ + // baseURL: 'https://medal.onrender.com/api', + baseURL: baseUrl, + // timeout: 6000, +}); + + +axios.interceptors.request.use( + (config) => { + const accessToken = localStorage.getItem("accessToken"); + if (accessToken) { + config.headers["x-auth-token"] = accessToken; + } + return config; + }, + (error) => { + Promise.reject(error); + } +); + +axios.interceptors.response.use( + (response) => { + return response; + }, + (error) => { + const originalRequest = error.config; + let refreshToken = localStorage.getItem("refreshToken"); + if ( + refreshToken && + error.response.status === 401 && + !originalRequest._retry + ) { + originalRequest._retry = true; + return axios + .post(`${baseUrl}/auth/refresh`, { refreshToken: refreshToken }) + .then((res) => { + if (res.status === 200) { + localStorage.setItem("accessToken", res.data.accessToken); + return axios(originalRequest); + } + }); + } + return Promise.reject(error); + } +); + +export const request = (method, url, data, config) => { + switch (method) { + case 'post': + return axiosInstance.post(url, data, config); + case 'get': + return axiosInstance.get(url, { params: data, ...config }); + case 'delete': + return axiosInstance.delete(url, { params: data, ...config }); + case 'put': + return axiosInstance.put(url, data, config); + default: + break; + } +}; diff --git a/src/api/user.api.js b/src/api/user.api.js new file mode 100644 index 0000000..bbebd80 --- /dev/null +++ b/src/api/user.api.js @@ -0,0 +1,13 @@ +import { request } from './request'; + +const userApi = { + unverified: () => request("get", `/users/unverified`), + + verify: (body) => request("post", `/users/unverified/verify`, body), + + reject: (body) => request("delete", `/users/unverified/reject`, body), + + generateStats: () => request("get", `/generate/stats`), +} + +export default userApi; \ No newline at end of file diff --git a/src/components/Cards/AppointmentCard.js b/src/components/Cards/AppointmentCard.js index a1f4f79..a3337ad 100644 --- a/src/components/Cards/AppointmentCard.js +++ b/src/components/Cards/AppointmentCard.js @@ -7,27 +7,28 @@ import Button from "@mui/material/Button"; import CancelIcon from "@mui/icons-material/Cancel"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../api"; +import API from "../../api"; +import { message } from "antd"; export default function AppointmentCard(props) { const [openBackdrop, setOpenBackdrop] = useState(false); async function handleCancel() { setOpenBackdrop(true); try { - const res = await api.cancelAppointment({ + const res = await API.cancelAppointment({ data: { pemail: props.pemail, demail: props.demail, doa: props.doa }, }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.erroMsg); + message.error(res.data.erroMsg); } else { setOpenBackdrop(false); - alert(res.data.msg); + message.error(res.data.msg); window.location.reload(); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Cards/BookingCard.js b/src/components/Cards/BookingCard.js index 543574b..174f9fa 100644 --- a/src/components/Cards/BookingCard.js +++ b/src/components/Cards/BookingCard.js @@ -8,8 +8,10 @@ import AddTaskIcon from "@mui/icons-material/AddTask"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { useNavigate, createSearchParams } from "react-router-dom"; -import api from "../../api"; + import jwt from "jsonwebtoken"; +import API from "../../api"; +import { message } from "antd"; export default function BookingCard(props) { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -26,7 +28,7 @@ export default function BookingCard(props) { if (props.linkto === "staff") { setOpenBackdrop(false); if (!validateEmail(props.ptemail)) { - alert("Enter a valid email"); + message.error("Enter a valid email"); return; } } @@ -63,10 +65,10 @@ export default function BookingCard(props) { doa: Date.parse(props.date), }; try { - const res = await api.bookAppointment(postData); + const res = await API.bookAppointment(postData); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); navigate({ @@ -80,7 +82,7 @@ export default function BookingCard(props) { } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Cards/DashCard.js b/src/components/Cards/DashCard.js index 4c7a2cc..7d09eaf 100644 --- a/src/components/Cards/DashCard.js +++ b/src/components/Cards/DashCard.js @@ -4,8 +4,8 @@ import CardContent from "@mui/material/CardContent"; import Typography from "@mui/material/Typography"; import { useNavigate, useLocation, createSearchParams } from "react-router-dom"; import "./DashCard.css"; -import { PaymentContext } from "../Dashboards/PatientDash/Tabs/MakePayment"; -import { StaffPaymentContext } from "../Dashboards/StaffDash/Tabs/MakePayment"; +import { PaymentContext } from "../../pages/PatientDash/Tabs/MakePayment"; +import { StaffPaymentContext } from "../../pages/StaffDash/Tabs/MakePayment"; export default function DashCard(props) { const payment = React.useContext( diff --git a/src/components/Cards/DocListCard.js b/src/components/Cards/DocListCard.js index 57d1574..b60d353 100644 --- a/src/components/Cards/DocListCard.js +++ b/src/components/Cards/DocListCard.js @@ -10,7 +10,9 @@ import Button from "@mui/material/Button"; import TextField from "@mui/material/TextField"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../api"; +import API from "../../api"; +import { message } from "antd"; + const styles = { backgroundColor: "#FF5403", @@ -42,10 +44,10 @@ export default function DocListCard(props) { async function handleDone() { setOpenBackdrop(true); try { - const res = await api.updateFee({ docName: props.heading, fee: newFee }); + const res = await API.updateFee({ docName: props.heading, fee: newFee }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); setNewFee(""); @@ -53,7 +55,7 @@ export default function DocListCard(props) { } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Cards/DuePaymentCard.js b/src/components/Cards/DuePaymentCard.js index 7cb715f..03347ea 100644 --- a/src/components/Cards/DuePaymentCard.js +++ b/src/components/Cards/DuePaymentCard.js @@ -9,9 +9,10 @@ import DoNotDisturbIcon from "@mui/icons-material/DoNotDisturb"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { useNavigate, createSearchParams } from "react-router-dom"; -import api from "../../api"; +import API from "../../api"; +import { message } from "antd"; -export default function AppointmentCard(props) { +export default function DuePaymentCard(props) { const [openBackdrop, setOpenBackdrop] = useState(false); const navigate = useNavigate(); function handlePayNow() { @@ -28,20 +29,20 @@ export default function AppointmentCard(props) { async function handleCancel() { setOpenBackdrop(true); try { - const res = await api.cancelAppointment({ + const res = await API.cancelAppointment({ data: { pemail: props.pemail, demail: props.demail, doa: props.doa }, }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.erroMsg); + message.error(res.data.erroMsg); } else { setOpenBackdrop(false); - alert(res.data.msg); + message.error(res.data.msg); window.location.reload(); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Cards/FeedbackCard.js b/src/components/Cards/FeedbackCard.js index 0aa0cd2..ecafa10 100644 --- a/src/components/Cards/FeedbackCard.js +++ b/src/components/Cards/FeedbackCard.js @@ -11,7 +11,8 @@ import Fab from "@mui/material/Fab"; import Tooltip from "@mui/material/Tooltip"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../api"; +import API from "../../api"; +import { message } from "antd"; export default function FeedbackCard(props) { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -27,7 +28,7 @@ export default function FeedbackCard(props) { async function handleSubmit() { setOpenBackdrop(true); try { - const res = await api.writeFeedback({ + const res = await API.writeFeedback({ pemail: props.pemail, demail: props.demail, doa: props.doa, @@ -36,15 +37,15 @@ export default function FeedbackCard(props) { }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); setSubmit(true); - alert(res.data.msg); + message.error(res.data.msg); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } @@ -52,7 +53,7 @@ export default function FeedbackCard(props) { async function handleDelete() { setOpenBackdrop(true); try { - const res = await api.deleteFeedback({ + const res = await API.deleteFeedback({ pemail: props.pemail, demail: props.demail, doa: props.doa, @@ -61,17 +62,17 @@ export default function FeedbackCard(props) { }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); setFeedbackText(""); setValue(0); setSubmit(false); - alert(res.data.msg); + message.error(res.data.msg); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Cards/PrescriptionCard.js b/src/components/Cards/PrescriptionCard.js index f989147..a66eeec 100644 --- a/src/components/Cards/PrescriptionCard.js +++ b/src/components/Cards/PrescriptionCard.js @@ -4,7 +4,7 @@ import Typography from "@mui/material/Typography"; import Fab from "@mui/material/Fab"; import FileDownloadIcon from "@mui/icons-material/FileDownload"; -export default function AppointmentCard(props) { +export default function PrescriptionCard(props) { return ( diff --git a/src/components/Cards/StatsCard.js b/src/components/Cards/StatsCard.js index 984b693..73a924a 100644 --- a/src/components/Cards/StatsCard.js +++ b/src/components/Cards/StatsCard.js @@ -3,7 +3,7 @@ import CardContent from "@mui/material/CardContent"; import Typography from "@mui/material/Typography"; import StarRateIcon from "@mui/icons-material/StarRate"; -export default function AppointmentCard(props) { +export default function StatsCard(props) { return ( diff --git a/src/components/Cards/VerifyCard.js b/src/components/Cards/VerifyCard.js index 9f56c2f..c5b1eb4 100644 --- a/src/components/Cards/VerifyCard.js +++ b/src/components/Cards/VerifyCard.js @@ -10,7 +10,8 @@ import Tooltip from "@mui/material/Tooltip"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { useNavigate, createSearchParams } from "react-router-dom"; -import api from "../../api"; +import API from "../../api"; +import { message } from "antd"; const styleVerify = { backgroundColor: "#64dd17", @@ -38,10 +39,10 @@ export default function VerifyCard(props) { async function handleVerify() { setOpenBackdrop(true); try { - const res = await api.verify({ email: props.subheading }); + const res = await API.verify({ email: props.subheading }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); if (props.unvuser === "doctor") { @@ -54,14 +55,14 @@ export default function VerifyCard(props) { })}`, }); } else { - if (!alert(res.data.msg)) { + if (!message.error(res.data.msg)) { window.location.reload(); } } } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } @@ -69,19 +70,19 @@ export default function VerifyCard(props) { async function handleReject() { setOpenBackdrop(true); try { - const res = await api.reject({ data: { email: props.subheading } }); + const res = await API.reject({ data: { email: props.subheading } }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); - if (!alert(res.data.msg)) { + if (!message.error(res.data.msg)) { window.location.reload(); } } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/DashBar/DashBar.js b/src/components/DashBar/DashBar.js index 9f318b0..da12a56 100644 --- a/src/components/DashBar/DashBar.js +++ b/src/components/DashBar/DashBar.js @@ -1,5 +1,5 @@ import { useContext, useState, Fragment } from "react"; -import { AuthContext } from "../../App"; +import { AuthContext } from "../../Router"; import jwt from "jsonwebtoken"; import AppBar from "@mui/material/AppBar"; import Box from "@mui/material/Box"; @@ -13,7 +13,8 @@ import { red } from "@mui/material/colors"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { useNavigate } from "react-router-dom"; -import api from "../../api"; +import API from "../../api"; +import { message } from "antd"; export default function DashBar() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -30,14 +31,14 @@ export default function DashBar() { const refreshToken = localStorage.getItem("refreshToken"); localStorage.removeItem("accessToken"); localStorage.removeItem("refreshToken"); - await api.logout({ data: { refreshToken } }); + await API.logout({ data: { refreshToken } }); setOpenBackdrop(false); auth.setUserType(null); navigate("/"); } catch (error) { setOpenBackdrop(false); console.error(error); - alert(error.response.data.error); + message.error(error.response.data.error); } } diff --git a/src/components/FileUploader/FileUploader.js b/src/components/FileUploader/FileUploader.js index ea34ad7..291b232 100644 --- a/src/components/FileUploader/FileUploader.js +++ b/src/components/FileUploader/FileUploader.js @@ -6,7 +6,8 @@ import FormGroup from "@mui/material/FormGroup"; import Typography from "@mui/material/Typography"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../api"; +import API from "../../api"; +import { message } from "antd"; const Input = styled("input")({ display: "none", @@ -47,21 +48,21 @@ export default function FileUploader(props) { formData.append("doa", props.doa); formData.append("prescriptionFile", file); try { - const res = await api.uploadPrescription(formData); + const res = await API.uploadPrescription(formData); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); setFileName(null); setErrFileName(null); - if (!alert(res.data.msg)) { + if (!message.error(res.data.msg)) { window.location.reload(); } } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Payments/Card/CardPay.js b/src/components/Payments/Card/CardPay.js index 09a013f..13d0539 100644 --- a/src/components/Payments/Card/CardPay.js +++ b/src/components/Payments/Card/CardPay.js @@ -17,8 +17,9 @@ import { import "react-credit-cards/es/styles-compiled.css"; import "./CardPay.css"; -import api from "../../../api"; +import API from "../../../api"; import { useSearchParams, useNavigate } from "react-router-dom"; +import { message } from "antd"; function CardPay() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -77,17 +78,17 @@ function CardPay() { setOpenBackdrop(true); e.preventDefault(); try { - const res = await api.makePayment({ pemail, demail, doa }); + const res = await API.makePayment({ pemail, demail, doa }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); - alert(res.data.msg); + message.error(res.data.msg); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.error(error); } setNumber(""); diff --git a/src/components/Payments/Cash/CashPay.js b/src/components/Payments/Cash/CashPay.js index 3c594b3..f670e12 100644 --- a/src/components/Payments/Cash/CashPay.js +++ b/src/components/Payments/Cash/CashPay.js @@ -7,7 +7,8 @@ import CheckIcon from "@mui/icons-material/Check"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { useSearchParams, useNavigate } from "react-router-dom"; -import api from "../../../api"; +import API from "../../../api"; +import { message } from "antd"; function CashPay() { const navigate = useNavigate(); @@ -22,18 +23,18 @@ function CashPay() { async function handleConfirm() { setOpenBackdrop(true); try { - const res = await api.makePayment({ pemail, demail, doa }); + const res = await API.makePayment({ pemail, demail, doa }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); - alert(res.data.msg); + message.error(res.data.msg); setConfirm(true); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.error(error); } } diff --git a/src/components/Payments/UPI/UpiPay.js b/src/components/Payments/UPI/UpiPay.js index 252d0f4..d6dc87c 100644 --- a/src/components/Payments/UPI/UpiPay.js +++ b/src/components/Payments/UPI/UpiPay.js @@ -7,7 +7,8 @@ import CheckIcon from "@mui/icons-material/Check"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { useSearchParams, useNavigate } from "react-router-dom"; -import api from "../../../api"; +import API from "../../../api"; +import { message } from "antd"; function UpiPay() { const navigate = useNavigate(); @@ -22,18 +23,18 @@ function UpiPay() { async function handleConfirm() { setOpenBackdrop(true); try { - const res = await api.makePayment({ pemail, demail, doa }); + const res = await API.makePayment({ pemail, demail, doa }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); - alert(res.data.msg); + message.error(res.data.msg); setConfirm(true); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.error(error); } } diff --git a/src/components/Dashboards/AdminDash/Tabs/AddNew.css b/src/pages/AdminDash/Tabs/AddNew.css similarity index 100% rename from src/components/Dashboards/AdminDash/Tabs/AddNew.css rename to src/pages/AdminDash/Tabs/AddNew.css diff --git a/src/components/Dashboards/AdminDash/Tabs/AddNew.js b/src/pages/AdminDash/Tabs/AddNew.js similarity index 99% rename from src/components/Dashboards/AdminDash/Tabs/AddNew.js rename to src/pages/AdminDash/Tabs/AddNew.js index 38d9e74..d83b3e8 100644 --- a/src/components/Dashboards/AdminDash/Tabs/AddNew.js +++ b/src/pages/AdminDash/Tabs/AddNew.js @@ -1,6 +1,5 @@ import { Fragment, forwardRef, useState } from "react"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; import Snackbar from "@mui/material/Snackbar"; import MuiAlert from "@mui/material/Alert"; import Typography from "@mui/material/Typography"; @@ -8,7 +7,8 @@ import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { useSearchParams } from "react-router-dom"; import "./AddNew.css"; -import api from "../../../../api"; +import API from "../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; const Alert = forwardRef(function Alert(props, ref) { return ; @@ -154,7 +154,7 @@ function AddNew() { }; try { - const res = await api.addNew(postData); + const res = await API.addNew(postData); if (res.data.error) { setOpenBackdrop(false); setErrorMessage(res.data.erroMsg); diff --git a/src/components/Dashboards/AdminDash/Tabs/DocList.js b/src/pages/AdminDash/Tabs/DocList.js similarity index 84% rename from src/components/Dashboards/AdminDash/Tabs/DocList.js rename to src/pages/AdminDash/Tabs/DocList.js index 03670a9..7b701e1 100644 --- a/src/components/Dashboards/AdminDash/Tabs/DocList.js +++ b/src/pages/AdminDash/Tabs/DocList.js @@ -1,14 +1,15 @@ import { Fragment, useEffect, useState } from "react"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import DocListCard from "../../../Cards/DocListCard"; import Grid from "@mui/material/Grid"; import Button from "@mui/material/Button"; import AddIcon from "@mui/icons-material/Add"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { Link } from "react-router-dom"; -import api from "../../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import DocListCard from "../../../components/Cards/DocListCard"; +import API from "../../../api"; +import { message } from "antd"; function DocList() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -18,17 +19,17 @@ function DocList() { async function fetchDocList() { setOpenBackdrop(true); try { - const res = await api.docList(); + const res = await API.docList(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); - setDocs(res.data); + setDocs(res.data) } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/AdminDash/Tabs/Feedbacks.js b/src/pages/AdminDash/Tabs/Feedbacks.js similarity index 87% rename from src/components/Dashboards/AdminDash/Tabs/Feedbacks.js rename to src/pages/AdminDash/Tabs/Feedbacks.js index feece65..2df86cb 100644 --- a/src/components/Dashboards/AdminDash/Tabs/Feedbacks.js +++ b/src/pages/AdminDash/Tabs/Feedbacks.js @@ -1,12 +1,14 @@ import { Fragment, useEffect, useState } from "react"; -import ViewFeedbackCard from "../../../Cards/ViewFeedbackCard"; + import Container from "@mui/material/Container"; import Grid from "@mui/material/Grid"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import DashBar from "../../../DashBar/DashBar"; -import api from "../../../../api"; +import API from "../../../api"; import Typography from "@mui/material/Typography"; +import ViewFeedbackCard from "../../../components/Cards/ViewFeedbackCard"; +import DashBar from "../../../components/DashBar/DashBar"; +import { message } from "antd"; function Feedbacks() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -17,10 +19,10 @@ function Feedbacks() { async function fetchFeedbacks() { setOpenBackdrop(true); try { - const res = await api.patientFeedbacks(); + const res = await API.patientFeedbacks(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); setPf(res.data); @@ -30,7 +32,7 @@ function Feedbacks() { } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/AdminDash/Tabs/GenerateStats.js b/src/pages/AdminDash/Tabs/GenerateStats.js similarity index 89% rename from src/components/Dashboards/AdminDash/Tabs/GenerateStats.js rename to src/pages/AdminDash/Tabs/GenerateStats.js index 1374655..439421a 100644 --- a/src/components/Dashboards/AdminDash/Tabs/GenerateStats.js +++ b/src/pages/AdminDash/Tabs/GenerateStats.js @@ -1,14 +1,15 @@ import { Fragment, useEffect, useState } from "react"; import Container from "@mui/material/Container"; import Grid from "@mui/material/Grid"; -import StatsCard from "../../../Cards/StatsCard"; -import DashBar from "../../../DashBar/DashBar"; import Button from "@mui/material/Button"; import { Link } from "react-router-dom"; import FeedbackIcon from "@mui/icons-material/Feedback"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../../../api"; +import API from "../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import StatsCard from "../../../components/Cards/StatsCard"; +import { message } from "antd"; function GenerateStats() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -22,10 +23,10 @@ function GenerateStats() { async function fetchStats() { setOpenBackdrop(true); try { - const res = await api.generateStats(); + const res = await API.generateStats(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); setMrd(res.data.mrd); @@ -36,7 +37,7 @@ function GenerateStats() { } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/AdminDash/Tabs/VerifySignUp.js b/src/pages/AdminDash/Tabs/VerifySignUp.js similarity index 84% rename from src/components/Dashboards/AdminDash/Tabs/VerifySignUp.js rename to src/pages/AdminDash/Tabs/VerifySignUp.js index fc9b708..749c885 100644 --- a/src/components/Dashboards/AdminDash/Tabs/VerifySignUp.js +++ b/src/pages/AdminDash/Tabs/VerifySignUp.js @@ -1,11 +1,14 @@ import { Fragment, useEffect, useState } from "react"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import VerifyCard from "../../../Cards/VerifyCard"; import Grid from "@mui/material/Grid"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import VerifyCard from "../../../components/Cards/VerifyCard"; +import API from "../../../api" +import { message } from "antd"; + + function VerifySignUp() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -15,17 +18,17 @@ function VerifySignUp() { async function fetchUnverified() { setOpenBackdrop(true); try { - const res = await api.unverified(); + const res = await API.unverified(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.error); + message.error(res.data.error); } else { setOpenBackdrop(false); setUnvUsers(res.data); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/AdminDash/AdminDash.js b/src/pages/AdminDash/index.js similarity index 74% rename from src/components/Dashboards/AdminDash/AdminDash.js rename to src/pages/AdminDash/index.js index 5319cbf..3cd8625 100644 --- a/src/components/Dashboards/AdminDash/AdminDash.js +++ b/src/pages/AdminDash/index.js @@ -1,4 +1,4 @@ -import Dashboard from "../Dashboard"; +import Dashboard from "../../components/Dashboards/Dashboard"; const cardTitles = [`Doctors' List`, "Generate Stats", "Verify Signup"]; diff --git a/src/components/Dashboards/DoctorDash/DoctorDash.js b/src/pages/DoctorDash/DoctorDash.js similarity index 73% rename from src/components/Dashboards/DoctorDash/DoctorDash.js rename to src/pages/DoctorDash/DoctorDash.js index a190d1b..c099f15 100644 --- a/src/components/Dashboards/DoctorDash/DoctorDash.js +++ b/src/pages/DoctorDash/DoctorDash.js @@ -1,4 +1,4 @@ -import Dashboard from "../Dashboard"; +import Dashboard from "../../components/Dashboards/Dashboard"; const cardTitles = ["Appointments", "Upload Prescription"]; diff --git a/src/components/Dashboards/DoctorDash/Tabs/Appointments.js b/src/pages/DoctorDash/Tabs/Appointments.js similarity index 88% rename from src/components/Dashboards/DoctorDash/Tabs/Appointments.js rename to src/pages/DoctorDash/Tabs/Appointments.js index b2d8977..c84cd81 100644 --- a/src/components/Dashboards/DoctorDash/Tabs/Appointments.js +++ b/src/pages/DoctorDash/Tabs/Appointments.js @@ -1,13 +1,14 @@ import { Fragment, useEffect, useState } from "react"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import DocAppointmentCard from "../../../Cards/DocAppointmentCard"; import Grid from "@mui/material/Grid"; import Typography from "@mui/material/Typography"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import jwt from "jsonwebtoken"; -import api from "../../../../api"; +import API from "../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import DocAppointmentCard from "../../../components/Cards/DocAppointmentCard"; +import { message } from "antd"; function Appointments() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -21,10 +22,10 @@ function Appointments() { const token = localStorage.getItem("accessToken"); const payload = token && jwt.decode(token); const demail = payload.userType === "doctor" && payload.email; - const res = await api.myAppointments(); + const res = await API.myAppointments(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); const appoints = res.data.filter( @@ -35,7 +36,7 @@ function Appointments() { } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/DoctorDash/Tabs/UploadPrescription.js b/src/pages/DoctorDash/Tabs/UploadPrescription.js similarity index 89% rename from src/components/Dashboards/DoctorDash/Tabs/UploadPrescription.js rename to src/pages/DoctorDash/Tabs/UploadPrescription.js index 4f5ead8..f621bf9 100644 --- a/src/components/Dashboards/DoctorDash/Tabs/UploadPrescription.js +++ b/src/pages/DoctorDash/Tabs/UploadPrescription.js @@ -1,13 +1,14 @@ import { Fragment, useEffect, useState } from "react"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import UploadPrescriptionCard from "../../../Cards/UploadPrescriptionCard"; import Grid from "@mui/material/Grid"; import Typography from "@mui/material/Typography"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import jwt from "jsonwebtoken"; -import api from "../../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import UploadPrescriptionCard from "../../../components/Cards/UploadPrescriptionCard"; +import API from "../../../api"; +import { message } from "antd"; function UploadPrescription() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -21,10 +22,10 @@ function UploadPrescription() { const token = localStorage.getItem("accessToken"); const payload = token && jwt.decode(token); const demail = payload.userType === "doctor" && payload.email; - const res = await api.myAppointments(); + const res = await API.myAppointments(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); const appoints = res.data.filter( @@ -38,7 +39,7 @@ function UploadPrescription() { } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/HomePage/HomePage.css b/src/pages/HomePage/HomePage.css similarity index 100% rename from src/components/HomePage/HomePage.css rename to src/pages/HomePage/HomePage.css diff --git a/src/components/HomePage/HomePage.js b/src/pages/HomePage/HomePage.js similarity index 100% rename from src/components/HomePage/HomePage.js rename to src/pages/HomePage/HomePage.js diff --git a/src/components/HomePage/brain.png b/src/pages/HomePage/brain.png similarity index 100% rename from src/components/HomePage/brain.png rename to src/pages/HomePage/brain.png diff --git a/src/components/Page404/Page404.css b/src/pages/Page404/Page404.css similarity index 100% rename from src/components/Page404/Page404.css rename to src/pages/Page404/Page404.css diff --git a/src/components/Page404/Page404.js b/src/pages/Page404/Page404.js similarity index 100% rename from src/components/Page404/Page404.js rename to src/pages/Page404/Page404.js diff --git a/src/components/Page404/bg404.png b/src/pages/Page404/bg404.png similarity index 100% rename from src/components/Page404/bg404.png rename to src/pages/Page404/bg404.png diff --git a/src/components/Dashboards/PatientDash/Tabs/BookAppointment.js b/src/pages/PatientDash/Tabs/BookAppointment.js similarity index 91% rename from src/components/Dashboards/PatientDash/Tabs/BookAppointment.js rename to src/pages/PatientDash/Tabs/BookAppointment.js index b390f4a..5643726 100644 --- a/src/components/Dashboards/PatientDash/Tabs/BookAppointment.js +++ b/src/pages/PatientDash/Tabs/BookAppointment.js @@ -1,7 +1,5 @@ import { useState, useEffect, Fragment } from "react"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import BookingCard from "../../../Cards/BookingCard"; import Grid from "@mui/material/Grid"; import Typography from "@mui/material/Typography"; import TextField from "@mui/material/TextField"; @@ -10,7 +8,10 @@ import LocalizationProvider from "@mui/lab/LocalizationProvider"; import DatePicker from "@mui/lab/DatePicker"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../../../api"; +import API from "../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import BookingCard from "../../../components/Cards/BookingCard"; + function BookAppointment(props) { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -20,7 +21,7 @@ function BookAppointment(props) { useEffect(() => { async function fetchDocList() { setOpenBackdrop(true); - const res = await api.docList(); + const res = await API.docList(); setOpenBackdrop(false); setBookingList(res.data); setNoteMsg( @@ -33,13 +34,13 @@ function BookAppointment(props) { const [value, setValue] = useState(new Date()); const [filteredList, setFilteredList] = useState( bookingList.length > 0 && - bookingList.filter((item) => item.wIds.includes(value.getDay())) + bookingList.filter((item) => item.wIds.includes(value.getDay())) ); useEffect(() => { setFilteredList( bookingList.length > 0 && - bookingList.filter((item) => item.wIds.includes(value.getDay())) + bookingList.filter((item) => item.wIds.includes(value.getDay())) ); }, [bookingList, value]); diff --git a/src/components/Dashboards/PatientDash/Tabs/CardPayment.js b/src/pages/PatientDash/Tabs/CardPayment.js similarity index 58% rename from src/components/Dashboards/PatientDash/Tabs/CardPayment.js rename to src/pages/PatientDash/Tabs/CardPayment.js index 09ea956..6f8b6fb 100644 --- a/src/components/Dashboards/PatientDash/Tabs/CardPayment.js +++ b/src/pages/PatientDash/Tabs/CardPayment.js @@ -1,4 +1,4 @@ -import CardPay from "../../../Payments/Card/CardPay"; +import CardPay from "../../../components/Payments/Card/CardPay"; function CardPaymentPatient() { return ; diff --git a/src/components/Dashboards/PatientDash/Tabs/Feedback.js b/src/pages/PatientDash/Tabs/Feedback.js similarity index 89% rename from src/components/Dashboards/PatientDash/Tabs/Feedback.js rename to src/pages/PatientDash/Tabs/Feedback.js index 3d85b54..9233114 100644 --- a/src/components/Dashboards/PatientDash/Tabs/Feedback.js +++ b/src/pages/PatientDash/Tabs/Feedback.js @@ -1,13 +1,14 @@ import { Fragment, useEffect, useState } from "react"; import jwt from "jsonwebtoken"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import FeedbackCard from "../../../Cards/FeedbackCard"; import Grid from "@mui/material/Grid"; import Typography from "@mui/material/Typography"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../../../api"; +import API from "../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import FeedbackCard from "../../../components/Cards/FeedbackCard"; +import { message } from "antd"; function Feedback() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -28,10 +29,10 @@ function Feedback() { const token = localStorage.getItem("accessToken"); const payload = token && jwt.decode(token); const ptemail = payload.userType === "patient" && payload.email; - const res = await api.myAppointments(); + const res = await API.myAppointments(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); const appoints = res.data.filter( @@ -42,12 +43,12 @@ function Feedback() { setAppointments(appoints); setDefMsg( appoints.length === 0 && - "**You have not booked any appointment yet.**" + "**You have not booked any appointment yet.**" ); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/PatientDash/Tabs/MakePayment.js b/src/pages/PatientDash/Tabs/MakePayment.js similarity index 88% rename from src/components/Dashboards/PatientDash/Tabs/MakePayment.js rename to src/pages/PatientDash/Tabs/MakePayment.js index 7ca15ed..1159172 100644 --- a/src/components/Dashboards/PatientDash/Tabs/MakePayment.js +++ b/src/pages/PatientDash/Tabs/MakePayment.js @@ -1,15 +1,16 @@ import React, { Fragment, useEffect, useState } from "react"; import Grid from "@mui/material/Grid"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import Dashboard from "../../Dashboard"; import { useSearchParams } from "react-router-dom"; -import api from "../../../../api"; import jwt from "jsonwebtoken"; -import DuePaymentCard from "../../../Cards/DuePaymentCard"; import Typography from "@mui/material/Typography"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; +import API from "../../../api"; +import Dashboard from "../../../components/Dashboards/Dashboard"; +import DashBar from "../../../components/DashBar/DashBar"; +import DuePaymentCard from "../../../components/Cards/DuePaymentCard"; +import { message } from "antd"; export const PaymentContext = React.createContext(); @@ -32,22 +33,22 @@ function MakePaymentPatinet() { const token = localStorage.getItem("accessToken"); const payload = token && jwt.decode(token); const ptemail = payload.userType === "patient" && payload.email; - const res = await api.duePayment(); + const res = await API.duePayment(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); const myUnpaid = res.data.filter((unp) => unp.pemail === ptemail); setDues(myUnpaid); setDefMsg( myUnpaid.length === 0 && - "**All clear here. None of your payment is due.**" + "**All clear here. None of your payment is due.**" ); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/PatientDash/Tabs/MyAppointments.js b/src/pages/PatientDash/Tabs/MyAppointments.js similarity index 91% rename from src/components/Dashboards/PatientDash/Tabs/MyAppointments.js rename to src/pages/PatientDash/Tabs/MyAppointments.js index 7bdf27a..3f305c6 100644 --- a/src/components/Dashboards/PatientDash/Tabs/MyAppointments.js +++ b/src/pages/PatientDash/Tabs/MyAppointments.js @@ -1,7 +1,5 @@ import { Fragment, useState, useEffect } from "react"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import AppointmentCard from "../../../Cards/AppointmentCard"; import Grid from "@mui/material/Grid"; import Typography from "@mui/material/Typography"; import Backdrop from "@mui/material/Backdrop"; @@ -11,7 +9,11 @@ import VisibilityOffIcon from "@mui/icons-material/VisibilityOff"; import VisibilityIcon from "@mui/icons-material/Visibility"; import Tooltip from "@mui/material/Tooltip"; import jwt from "jsonwebtoken"; -import api from "../../../../api"; +import API from "../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import AppointmentCard from "../../../components/Cards/AppointmentCard"; +import { message } from "antd"; + function MyAppointments() { const [allAppoints, setAllAppoints] = useState([]); @@ -27,10 +29,10 @@ function MyAppointments() { const token = localStorage.getItem("accessToken"); const payload = token && jwt.decode(token); const ptemail = payload.userType === "patient" && payload.email; - const res = await api.myAppointments(); + const res = await API.myAppointments(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); const appoints = res.data.filter( @@ -40,12 +42,12 @@ function MyAppointments() { setAllAppoints(appoints); setDefMsg( appoints.length === 0 && - "**You have not booked any appointment yet.**" + "**You have not booked any appointment yet.**" ); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/PatientDash/Tabs/Prescriptions.js b/src/pages/PatientDash/Tabs/Prescriptions.js similarity index 88% rename from src/components/Dashboards/PatientDash/Tabs/Prescriptions.js rename to src/pages/PatientDash/Tabs/Prescriptions.js index 883ff87..3a2f73a 100644 --- a/src/components/Dashboards/PatientDash/Tabs/Prescriptions.js +++ b/src/pages/PatientDash/Tabs/Prescriptions.js @@ -1,13 +1,15 @@ import { Fragment, useEffect, useState } from "react"; import jwt from "jsonwebtoken"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import PrescriptionCard from "../../../Cards/PrescriptionCard"; import Grid from "@mui/material/Grid"; import Typography from "@mui/material/Typography"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../../../api"; +import API from "../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import PrescriptionCard from "../../../components/Cards/PrescriptionCard"; +import { message } from "antd"; + function Prescriptions() { const [prs, setPrs] = useState([]); @@ -21,10 +23,10 @@ function Prescriptions() { const token = localStorage.getItem("accessToken"); const payload = token && jwt.decode(token); const ptemail = payload.userType === "patient" && payload.email; - const res = await api.prescriptions(); + const res = await API.prescriptions(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); const prescs = res.data.filter((presc) => presc.pemail === ptemail); @@ -35,7 +37,7 @@ function Prescriptions() { } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/PatientDash/Tabs/UpiPayment.js b/src/pages/PatientDash/Tabs/UpiPayment.js similarity index 59% rename from src/components/Dashboards/PatientDash/Tabs/UpiPayment.js rename to src/pages/PatientDash/Tabs/UpiPayment.js index 90abec2..bf4c3a6 100644 --- a/src/components/Dashboards/PatientDash/Tabs/UpiPayment.js +++ b/src/pages/PatientDash/Tabs/UpiPayment.js @@ -1,4 +1,4 @@ -import UpiPay from "../../../Payments/UPI/UpiPay"; +import UpiPay from "../../../components/Payments/UPI/UpiPay"; function UpiPaymentPatient() { return ; diff --git a/src/components/Dashboards/PatientDash/Tabs/ViewLocation.js b/src/pages/PatientDash/Tabs/ViewLocation.js similarity index 100% rename from src/components/Dashboards/PatientDash/Tabs/ViewLocation.js rename to src/pages/PatientDash/Tabs/ViewLocation.js diff --git a/src/components/Dashboards/PatientDash/PatientDash.js b/src/pages/PatientDash/index.js similarity index 79% rename from src/components/Dashboards/PatientDash/PatientDash.js rename to src/pages/PatientDash/index.js index 02bc8be..59c5576 100644 --- a/src/components/Dashboards/PatientDash/PatientDash.js +++ b/src/pages/PatientDash/index.js @@ -1,4 +1,4 @@ -import Dashboard from "../Dashboard"; +import Dashboard from "../../components/Dashboards/Dashboard"; const cardTitles = [ "View Location", diff --git a/src/components/SignIn/SignIn.css b/src/pages/SignIn/SignIn.css similarity index 100% rename from src/components/SignIn/SignIn.css rename to src/pages/SignIn/SignIn.css diff --git a/src/components/SignIn/SignIn.js b/src/pages/SignIn/SignIn.js similarity index 97% rename from src/components/SignIn/SignIn.js rename to src/pages/SignIn/SignIn.js index 8f98be9..2a8abd9 100644 --- a/src/components/SignIn/SignIn.js +++ b/src/pages/SignIn/SignIn.js @@ -1,5 +1,4 @@ import * as React from "react"; -import { AuthContext } from "../../App"; import Avatar from "@mui/material/Avatar"; import Button from "@mui/material/Button"; import CssBaseline from "@mui/material/CssBaseline"; @@ -14,8 +13,9 @@ import MuiAlert from "@mui/material/Alert"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { Link, useSearchParams } from "react-router-dom"; -import api from "../../api"; +import API from "../../api"; import "./SignIn.css"; +import { AuthContext } from "../../Router"; const theme = createTheme(); @@ -73,7 +73,7 @@ export default function SignIn() { }; try { - const res = await api.signin(postData); + const res = await API.signin(postData); if (res.data.error) { setOpenBackdrop(false); setErrorMsg(res.data.errorMsg); diff --git a/src/components/SignUp/SignUp.css b/src/pages/SignUp/SignUp.css similarity index 100% rename from src/components/SignUp/SignUp.css rename to src/pages/SignUp/SignUp.css diff --git a/src/components/SignUp/SignUp.js b/src/pages/SignUp/SignUp.js similarity index 99% rename from src/components/SignUp/SignUp.js rename to src/pages/SignUp/SignUp.js index 4208df6..8154fa1 100644 --- a/src/components/SignUp/SignUp.js +++ b/src/pages/SignUp/SignUp.js @@ -1,5 +1,5 @@ import { forwardRef, useState, useEffect } from "react"; -import api from "../../api"; +import API from "../../api"; import Avatar from "@mui/material/Avatar"; import Button from "@mui/material/Button"; import CssBaseline from "@mui/material/CssBaseline"; @@ -90,7 +90,7 @@ export default function SignUp() { }; try { - const res = await api.signup(postData); + const res = await API.signup(postData); if (res.data.error) { setOpenBackdrop(false); setErrorMsg(res.data.errorMsg); diff --git a/src/components/Dashboards/StaffDash/StaffDash.js b/src/pages/StaffDash/StaffDash.js similarity index 74% rename from src/components/Dashboards/StaffDash/StaffDash.js rename to src/pages/StaffDash/StaffDash.js index 88ca6be..fda67a1 100644 --- a/src/components/Dashboards/StaffDash/StaffDash.js +++ b/src/pages/StaffDash/StaffDash.js @@ -1,4 +1,4 @@ -import Dashboard from "../Dashboard"; +import Dashboard from "../../components/Dashboards/Dashboard"; const cardTitles = ["Book Appointment", "Cancel Appointment", "Make Payment"]; diff --git a/src/components/Dashboards/StaffDash/Tabs/BookAppointment.js b/src/pages/StaffDash/Tabs/BookAppointment.js similarity index 93% rename from src/components/Dashboards/StaffDash/Tabs/BookAppointment.js rename to src/pages/StaffDash/Tabs/BookAppointment.js index e1c0c45..a7e493e 100644 --- a/src/components/Dashboards/StaffDash/Tabs/BookAppointment.js +++ b/src/pages/StaffDash/Tabs/BookAppointment.js @@ -1,7 +1,5 @@ import { useState, useEffect, Fragment } from "react"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import BookingCard from "../../../Cards/BookingCard"; import Grid from "@mui/material/Grid"; import Typography from "@mui/material/Typography"; import TextField from "@mui/material/TextField"; @@ -10,8 +8,10 @@ import LocalizationProvider from "@mui/lab/LocalizationProvider"; import DatePicker from "@mui/lab/DatePicker"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../../../api"; import Box from "@mui/material/Box"; +import API from "../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import BookingCard from "../../../components/Cards/BookingCard"; function BookAppointmentStaff(props) { const [bookingList, setBookingList] = useState([]); @@ -22,7 +22,7 @@ function BookAppointmentStaff(props) { useEffect(() => { async function fetchDocList() { setOpenBackdrop(true); - const res = await api.docList(); + const res = await API.docList(); setOpenBackdrop(false); setBookingList(res.data); setNoteMsg( @@ -35,13 +35,13 @@ function BookAppointmentStaff(props) { const [value, setValue] = useState(new Date()); const [filteredList, setFilteredList] = useState( bookingList.length > 0 && - bookingList.filter((item) => item.wIds.includes(value.getDay())) + bookingList.filter((item) => item.wIds.includes(value.getDay())) ); useEffect(() => { setFilteredList( bookingList.length > 0 && - bookingList.filter((item) => item.wIds.includes(value.getDay())) + bookingList.filter((item) => item.wIds.includes(value.getDay())) ); }, [bookingList, value]); diff --git a/src/components/Dashboards/StaffDash/Tabs/CancelAppointment.js b/src/pages/StaffDash/Tabs/CancelAppointment.js similarity index 91% rename from src/components/Dashboards/StaffDash/Tabs/CancelAppointment.js rename to src/pages/StaffDash/Tabs/CancelAppointment.js index 8d1412c..e01250f 100644 --- a/src/components/Dashboards/StaffDash/Tabs/CancelAppointment.js +++ b/src/pages/StaffDash/Tabs/CancelAppointment.js @@ -1,7 +1,5 @@ import { Fragment, useState } from "react"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import AppointmentCard from "../../../Cards/AppointmentCard"; import Grid from "@mui/material/Grid"; import Typography from "@mui/material/Typography"; import Stack from "@mui/material/Stack"; @@ -9,7 +7,10 @@ import Button from "@mui/material/Button"; import TextField from "@mui/material/TextField"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; -import api from "../../../../api"; +import API from "../../../api"; +import DashBar from "../../../components/DashBar/DashBar"; +import AppointmentCard from "../../../components/Cards/AppointmentCard"; +import { message } from "antd"; function CancelAppointment() { const [openBackdrop, setOpenBackdrop] = useState(false); @@ -29,15 +30,15 @@ function CancelAppointment() { setOpenBackdrop(true); if (!validateEmail(email)) { setOpenBackdrop(false); - alert("Enter a valid email!"); + message.error("Enter a valid email!"); return; } try { const ptemail = email; - const res = await api.myAppointments(); + const res = await API.myAppointments(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); const appoints = res.data.filter( @@ -48,7 +49,7 @@ function CancelAppointment() { } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/StaffDash/Tabs/CardPayment.js b/src/pages/StaffDash/Tabs/CardPayment.js similarity index 90% rename from src/components/Dashboards/StaffDash/Tabs/CardPayment.js rename to src/pages/StaffDash/Tabs/CardPayment.js index 93a6e50..8396c85 100644 --- a/src/components/Dashboards/StaffDash/Tabs/CardPayment.js +++ b/src/pages/StaffDash/Tabs/CardPayment.js @@ -7,12 +7,12 @@ import CheckIcon from "@mui/icons-material/Check"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; import { useSearchParams, useNavigate } from "react-router-dom"; -import api from "../../../../api"; +import API from "../../../api"; +import { message } from "antd"; function CardPaymentStaff() { const [openBackdrop, setOpenBackdrop] = useState(false); const navigate = useNavigate(); - const [searchParams] = useSearchParams(); const pemail = searchParams ? searchParams.get("pemail") : null; const demail = searchParams ? searchParams.get("demail") : null; @@ -22,18 +22,18 @@ function CardPaymentStaff() { async function handleConfirm() { setOpenBackdrop(true); try { - const res = await api.makePayment({ pemail, demail, doa }); + const res = await API.makePayment({ pemail, demail, doa }); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); - alert(res.data.msg); + message.error(res.data.msg); setConfirm(true); } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.error(error); } } diff --git a/src/components/Dashboards/StaffDash/Tabs/CashPayment.js b/src/pages/StaffDash/Tabs/CashPayment.js similarity index 54% rename from src/components/Dashboards/StaffDash/Tabs/CashPayment.js rename to src/pages/StaffDash/Tabs/CashPayment.js index a5f2201..8a11d03 100644 --- a/src/components/Dashboards/StaffDash/Tabs/CashPayment.js +++ b/src/pages/StaffDash/Tabs/CashPayment.js @@ -1,4 +1,5 @@ -import CashPay from "../../../Payments/Cash/CashPay"; +import CashPay from "../../../components/Payments/Cash/CashPay"; + function CashPayment() { return ; diff --git a/src/components/Dashboards/StaffDash/Tabs/MakePayment.js b/src/pages/StaffDash/Tabs/MakePayment.js similarity index 92% rename from src/components/Dashboards/StaffDash/Tabs/MakePayment.js rename to src/pages/StaffDash/Tabs/MakePayment.js index 939c5bd..7521677 100644 --- a/src/components/Dashboards/StaffDash/Tabs/MakePayment.js +++ b/src/pages/StaffDash/Tabs/MakePayment.js @@ -1,17 +1,18 @@ import React, { Fragment, useState } from "react"; import Grid from "@mui/material/Grid"; import Container from "@mui/material/Container"; -import DashBar from "../../../DashBar/DashBar"; -import Dashboard from "../../Dashboard"; import { useSearchParams } from "react-router-dom"; -import api from "../../../../api"; -import DuePaymentCard from "../../../Cards/DuePaymentCard"; import Typography from "@mui/material/Typography"; import Stack from "@mui/material/Stack"; import Button from "@mui/material/Button"; import TextField from "@mui/material/TextField"; import Backdrop from "@mui/material/Backdrop"; import CircularProgress from "@mui/material/CircularProgress"; +import API from "../../../api"; +import Dashboard from "../../../components/Dashboards/Dashboard"; +import DashBar from "../../../components/DashBar/DashBar"; +import DuePaymentCard from "../../../components/Cards/DuePaymentCard"; +import { message } from "antd"; export const StaffPaymentContext = React.createContext(); @@ -40,15 +41,15 @@ function MakePaymentStaff() { setOpenBackdrop(true); if (!validateEmail(email)) { setOpenBackdrop(false); - alert("Enter a valid Email."); + message.error("Enter a valid Email."); return; } try { const ptemail = email; - const res = await api.duePayment(); + const res = await API.duePayment(); if (res.data.error) { setOpenBackdrop(false); - alert(res.data.errorMsg); + message.error(res.data.errorMsg); } else { setOpenBackdrop(false); const unpaids = res.data.filter((unp) => unp.pemail === ptemail); @@ -57,7 +58,7 @@ function MakePaymentStaff() { } } catch (error) { setOpenBackdrop(false); - alert(error.response.data.errorMsg); + message.error(error.response.data.errorMsg); console.log(error); } } diff --git a/src/components/Dashboards/StaffDash/Tabs/UpiPayment.js b/src/pages/StaffDash/Tabs/UpiPayment.js similarity index 58% rename from src/components/Dashboards/StaffDash/Tabs/UpiPayment.js rename to src/pages/StaffDash/Tabs/UpiPayment.js index 988762c..fa4b2a8 100644 --- a/src/components/Dashboards/StaffDash/Tabs/UpiPayment.js +++ b/src/pages/StaffDash/Tabs/UpiPayment.js @@ -1,4 +1,4 @@ -import UpiPay from "../../../Payments/UPI/UpiPay"; +import UpiPay from "../../../components/Payments/UPI/UpiPay"; function UpiPaymentStaff() { return ; diff --git a/yarn.lock b/yarn.lock index 2950bdd..316d00d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,53 @@ # yarn lockfile v1 +"@ant-design/colors@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.0.0.tgz#eb7eecead124c3533aea05d61254f0a17f2b61b3" + integrity sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg== + dependencies: + "@ctrl/tinycolor" "^3.4.0" + +"@ant-design/cssinjs@^1.17.2": + version "1.17.2" + resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.17.2.tgz#08e939cbe60e9e0e0f3f03cd53a52e4a7623ed1f" + integrity sha512-vu7lnfEx4Mf8MPzZxn506Zen3Nt4fRr2uutwvdCuTCN5IiU0lDdQ0tiJ24/rmB8+pefwjluYsbyzbQSbgfJy+A== + dependencies: + "@babel/runtime" "^7.11.1" + "@emotion/hash" "^0.8.0" + "@emotion/unitless" "^0.7.5" + classnames "^2.3.1" + csstype "^3.0.10" + rc-util "^5.35.0" + stylis "^4.0.13" + +"@ant-design/icons-svg@^4.3.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.3.1.tgz#4b2f65a17d4d32b526baa6414aca2117382bf8da" + integrity sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g== + +"@ant-design/icons@^5.2.6": + version "5.2.6" + resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-5.2.6.tgz#2d4a9a37f531eb2a20cebec01d6fb69cf593900d" + integrity sha512-4wn0WShF43TrggskBJPRqCD0fcHbzTYjnaoskdiJrVHg86yxoZ8ZUqsXvyn4WUqehRiFKnaclOhqk9w4Ui2KVw== + dependencies: + "@ant-design/colors" "^7.0.0" + "@ant-design/icons-svg" "^4.3.0" + "@babel/runtime" "^7.11.2" + classnames "^2.2.6" + rc-util "^5.31.1" + +"@ant-design/react-slick@~1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-1.0.2.tgz#241bb412aeacf7ff5d50c61fa5db66773fde6b56" + integrity sha512-Wj8onxL/T8KQLFFiCA4t8eIRGpRR+UPgOdac2sYzonv+i0n3kXHmvHLLiOYL655DQx2Umii9Y9nNgL7ssu5haQ== + dependencies: + "@babel/runtime" "^7.10.4" + classnames "^2.2.5" + json2mq "^0.2.0" + resize-observer-polyfill "^1.5.1" + throttle-debounce "^5.0.0" + "@babel/code-frame@7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" @@ -1091,6 +1138,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.12.18" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" @@ -1098,7 +1152,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.16.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== @@ -1161,6 +1215,11 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== +"@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.6.0", "@ctrl/tinycolor@^3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31" + integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA== + "@date-io/core@^2.11.0": version "2.11.0" resolved "https://registry.yarnpkg.com/@date-io/core/-/core-2.11.0.tgz#28580cda1c8228ab2c7ed6aee673ef0495f913e6" @@ -1739,6 +1798,77 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.10.2.tgz#0798c03351f0dea1a5a4cabddf26a55a7cbee590" integrity sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ== +"@rc-component/color-picker@~1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@rc-component/color-picker/-/color-picker-1.4.1.tgz#dcab0b660e9c4ed63a7582db68ed4a77c862cb93" + integrity sha512-vh5EWqnsayZa/JwUznqDaPJz39jznx/YDbyBuVJntv735tKXKwEUZZb2jYEldOg+NKWZwtALjGMrNeGBmqFoEw== + dependencies: + "@babel/runtime" "^7.10.1" + "@ctrl/tinycolor" "^3.6.0" + classnames "^2.2.6" + rc-util "^5.30.0" + +"@rc-component/context@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@rc-component/context/-/context-1.4.0.tgz#dc6fb021d6773546af8f016ae4ce9aea088395e8" + integrity sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w== + dependencies: + "@babel/runtime" "^7.10.1" + rc-util "^5.27.0" + +"@rc-component/mini-decimal@^1.0.1": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz#7b7a362b14a0a54cb5bc6fd2b82731f29f11d9b0" + integrity sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ== + dependencies: + "@babel/runtime" "^7.18.0" + +"@rc-component/mutate-observer@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz#ee53cc88b78aade3cd0653609215a44779386fd8" + integrity sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw== + dependencies: + "@babel/runtime" "^7.18.0" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.0-9", "@rc-component/portal@^1.0.2", "@rc-component/portal@^1.1.0", "@rc-component/portal@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@rc-component/portal/-/portal-1.1.2.tgz#55db1e51d784e034442e9700536faaa6ab63fc71" + integrity sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg== + dependencies: + "@babel/runtime" "^7.18.0" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/tour@~1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@rc-component/tour/-/tour-1.10.0.tgz#b05bc327438f1c583439e2d2dcc10ec0530aea19" + integrity sha512-voV0BKaTJbewB9LLgAHQ7tAGG7rgDkKQkZo82xw2gIk542hY+o7zwoqdN16oHhIKk7eG/xi+mdXrONT62Dt57A== + dependencies: + "@babel/runtime" "^7.18.0" + "@rc-component/portal" "^1.0.0-9" + "@rc-component/trigger" "^1.3.6" + classnames "^2.3.2" + rc-util "^5.24.4" + +"@rc-component/trigger@^1.17.0", "@rc-component/trigger@^1.18.0", "@rc-component/trigger@^1.18.1", "@rc-component/trigger@^1.3.6", "@rc-component/trigger@^1.5.0", "@rc-component/trigger@^1.7.0": + version "1.18.2" + resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-1.18.2.tgz#dc52c4c66fa8aaccaf0710498f2429fc05454e3b" + integrity sha512-jRLYgFgjLEPq3MvS87fIhcfuywFSRDaDrYw1FLku7Cm4esszvzTbA0JBsyacAyLrK9rF3TiHFcvoEDMzoD3CTA== + dependencies: + "@babel/runtime" "^7.23.2" + "@rc-component/portal" "^1.1.0" + classnames "^2.3.2" + rc-motion "^2.0.0" + rc-resize-observer "^1.3.1" + rc-util "^5.38.0" + +"@remix-run/router@1.14.0": + version "1.14.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.0.tgz#9bc39a5a3a71b81bdb310eba6def5bc3966695b7" + integrity sha512-WOHih+ClN7N8oHk9N4JUiMxQJmRVaOxcg8w7F/oHUXzJt920ekASLI/7cYX8XkntDWRhLZtsk6LbGrkgOAvi5A== + "@rollup/plugin-node-resolve@^7.1.1": version "7.1.3" resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" @@ -2613,6 +2743,60 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +antd@^5.11.1: + version "5.11.1" + resolved "https://registry.yarnpkg.com/antd/-/antd-5.11.1.tgz#69bc1a7f52536ec5eec0afe88ec3aacd274c5faf" + integrity sha512-X7Gk1TtJtM9goTrmTPVserqcP7crtV2TX/pbxgqyHpMZRrnBy0EI3h4ngrW+zsIAW8/iqpgrYsG/NVUel6xkBA== + dependencies: + "@ant-design/colors" "^7.0.0" + "@ant-design/cssinjs" "^1.17.2" + "@ant-design/icons" "^5.2.6" + "@ant-design/react-slick" "~1.0.2" + "@babel/runtime" "^7.18.3" + "@ctrl/tinycolor" "^3.6.1" + "@rc-component/color-picker" "~1.4.1" + "@rc-component/mutate-observer" "^1.1.0" + "@rc-component/tour" "~1.10.0" + "@rc-component/trigger" "^1.18.1" + classnames "^2.3.2" + copy-to-clipboard "^3.3.3" + dayjs "^1.11.1" + qrcode.react "^3.1.0" + rc-cascader "~3.20.0" + rc-checkbox "~3.1.0" + rc-collapse "~3.7.1" + rc-dialog "~9.3.4" + rc-drawer "~6.5.2" + rc-dropdown "~4.1.0" + rc-field-form "~1.40.0" + rc-image "~7.3.2" + rc-input "~1.3.5" + rc-input-number "~8.4.0" + rc-mentions "~2.9.1" + rc-menu "~9.12.2" + rc-motion "^2.9.0" + rc-notification "~5.3.0" + rc-pagination "~3.7.0" + rc-picker "~3.14.6" + rc-progress "~3.5.1" + rc-rate "~2.12.0" + rc-resize-observer "^1.4.0" + rc-segmented "~2.2.2" + rc-select "~14.10.0" + rc-slider "~10.4.0" + rc-steps "~6.0.1" + rc-switch "~4.1.0" + rc-table "~7.35.2" + rc-tabs "~12.13.1" + rc-textarea "~1.5.2" + rc-tooltip "~6.1.2" + rc-tree "~5.8.2" + rc-tree-select "~5.15.0" + rc-upload "~4.3.5" + rc-util "^5.38.1" + scroll-into-view-if-needed "^3.1.0" + throttle-debounce "^5.0.0" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -2690,6 +2874,11 @@ array-includes@^3.1.1, array-includes@^3.1.2: get-intrinsic "^1.1.1" is-string "^1.0.5" +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -2796,6 +2985,11 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async-validator@^4.1.0: + version "4.2.5" + resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== + async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -3579,6 +3773,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" @@ -3745,6 +3944,11 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" +compute-scroll-into-view@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz#753f11d972596558d8fe7c6bcbc8497690ab4c87" + integrity sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -3843,6 +4047,13 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= +copy-to-clipboard@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + core-js-compat@^3.6.2, core-js-compat@^3.8.0: version "3.9.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.0.tgz#29da39385f16b71e1915565aa0385c4e0963ad56" @@ -4240,6 +4451,11 @@ date-fns@^2.27.0: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.27.0.tgz#e1ff3c3ddbbab8a2eaadbb6106be2929a5a2d92b" integrity sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q== +dayjs@^1.11.1: + version "1.11.10" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -5823,13 +6039,6 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -history@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/history/-/history-5.1.0.tgz#2e93c09c064194d38d52ed62afd0afc9d9b01ece" - integrity sha512-zPuQgPacm2vH2xdORvGGz1wQMuHSIB56yNAy5FnLuwOwgSYyPKptJtcMm6Ev+hRGeS+GzhbmRacHzvlESbFwDg== - dependencies: - "@babel/runtime" "^7.7.6" - hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -7129,6 +7338,13 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== + dependencies: + string-convert "^0.2.0" + json3@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" @@ -9372,6 +9588,11 @@ qj@~2.0.0: resolved "https://registry.yarnpkg.com/qj/-/qj-2.0.0.tgz#054dd3b75ce018728d23a0605f030dfda0bd158a" integrity sha1-BU3Tt1zgGHKNI6BgXwMN/aC9FYo= +qrcode.react@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8" + integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" @@ -9452,6 +9673,355 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +rc-cascader@~3.20.0: + version "3.20.0" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.20.0.tgz#b270f9d84ed83417ee7309ef5e56e415f1586076" + integrity sha512-lkT9EEwOcYdjZ/jvhLoXGzprK1sijT3/Tp4BLxQQcHDZkkOzzwYQC9HgmKoJz0K7CukMfgvO9KqHeBdgE+pELw== + dependencies: + "@babel/runtime" "^7.12.5" + array-tree-filter "^2.1.0" + classnames "^2.3.1" + rc-select "~14.10.0" + rc-tree "~5.8.1" + rc-util "^5.37.0" + +rc-checkbox@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-3.1.0.tgz#6be0d9d8de2cc96fb5e37f9036a1c3e360d0a42d" + integrity sha512-PAwpJFnBa3Ei+5pyqMMXdcKYKNBMS+TvSDiLdDnARnMJHC8ESxwPfm4Ao1gJiKtWLdmGfigascnCpwrHFgoOBQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.3.2" + rc-util "^5.25.2" + +rc-collapse@~3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.7.1.tgz#bda1f7f80adccf3433c1c15d4d9f9ca09910c727" + integrity sha512-N/7ejyiTf3XElNJBBpxqnZBUuMsQWEOPjB2QkfNvZ/Ca54eAvJXuOD1EGbCWCk2m7v/MSxku7mRpdeaLOCd4Gg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.3.4" + rc-util "^5.27.0" + +rc-dialog@~9.3.4: + version "9.3.4" + resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-9.3.4.tgz#e0decb3d4a0dbe36524a67ed2f8fe2daa4b7b73c" + integrity sha512-975X3018GhR+EjZFbxA2Z57SX5rnu0G0/OxFgMMvZK4/hQWEm3MHaNvP4wXpxYDoJsp+xUvVW+GB9CMMCm81jA== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/portal" "^1.0.0-8" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.21.0" + +rc-drawer@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-6.5.2.tgz#49c1f279261992f6d4653d32a03b14acd436d610" + integrity sha512-QckxAnQNdhh4vtmKN0ZwDf3iakO83W9eZcSKWYYTDv4qcD2fHhRAZJJ/OE6v2ZlQ2kSqCJX5gYssF4HJFvsEPQ== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/portal" "^1.1.1" + classnames "^2.2.6" + rc-motion "^2.6.1" + rc-util "^5.36.0" + +rc-dropdown@~4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-4.1.0.tgz#418a68939631520de80d0865d02b440eeeb4168e" + integrity sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw== + dependencies: + "@babel/runtime" "^7.18.3" + "@rc-component/trigger" "^1.7.0" + classnames "^2.2.6" + rc-util "^5.17.0" + +rc-field-form@~1.40.0: + version "1.40.0" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.40.0.tgz#808dce06ebae1c3aea574e672b673533fc98f11f" + integrity sha512-OM3N01X2BYFGJDJcwpk9/BBtlwgveE7eh2SQAKIxVCt9KVWlODYJ9ypTHQdxchfDbeJKJKxMBFXlLAmyvlgPHg== + dependencies: + "@babel/runtime" "^7.18.0" + async-validator "^4.1.0" + rc-util "^5.32.2" + +rc-image@~7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-7.3.2.tgz#fd92ab9994552d4f42638af0810039d34ad32dba" + integrity sha512-ICEF6SWv9YKhDXxy1vrXcmf0TVvEcQWIww5Yg+f+mn7e4oGX7FNP4+FExwMjNO5UHBEuWrigbGhlCgI6yZZ1jg== + dependencies: + "@babel/runtime" "^7.11.2" + "@rc-component/portal" "^1.0.2" + classnames "^2.2.6" + rc-dialog "~9.3.4" + rc-motion "^2.6.2" + rc-util "^5.34.1" + +rc-input-number@~8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-8.4.0.tgz#f0d0caa2ce3a4e37f062556f9cb4c08c8c23322d" + integrity sha512-B6rziPOLRmeP7kcS5qbdC5hXvvDHYKV4vUxmahevYx2E6crS2bRi0xLDjhJ0E1HtOWo8rTmaE2EBJAkTCZOLdA== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/mini-decimal" "^1.0.1" + classnames "^2.2.5" + rc-input "~1.3.5" + rc-util "^5.28.0" + +rc-input@~1.3.5: + version "1.3.6" + resolved "https://registry.yarnpkg.com/rc-input/-/rc-input-1.3.6.tgz#038b74779b6c8b688ff60a41c3976d1db7a1d7d6" + integrity sha512-/HjTaKi8/Ts4zNbYaB5oWCquxFyFQO4Co1MnMgoCeGJlpe7k8Eir2HN0a0F9IHDmmo+GYiGgPpz7w/d/krzsJA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.18.1" + +rc-mentions@~2.9.1: + version "2.9.1" + resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-2.9.1.tgz#cfe55913fd5bc156ef9814f38c1a2ceefee032ce" + integrity sha512-cZuElWr/5Ws0PXx1uxobxfYh4mqUw2FitfabR62YnWgm+WAfDyXZXqZg5DxXW+M1cgVvntrQgDDd9LrihrXzew== + dependencies: + "@babel/runtime" "^7.22.5" + "@rc-component/trigger" "^1.5.0" + classnames "^2.2.6" + rc-input "~1.3.5" + rc-menu "~9.12.0" + rc-textarea "~1.5.0" + rc-util "^5.34.1" + +rc-menu@~9.12.0, rc-menu@~9.12.2: + version "9.12.2" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.12.2.tgz#1bab34646421224eff5c5b7de993f8ea1238418e" + integrity sha512-NzloFH2pRUYmQ3S/YbJAvRkgCZaLvq0sRa5rgJtuIHLfPPprNHNyepeSlT64+dbVqI4qRWL44VN0lUCldCbbfg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^1.17.0" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.3.1" + rc-util "^5.27.0" + +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.0.tgz#9e18a1b8d61e528a97369cf9a7601e9b29205710" + integrity sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.21.0" + +rc-notification@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-5.3.0.tgz#e31c86fe2350598ade8cff383babd1befa7a94fe" + integrity sha512-WCf0uCOkZ3HGfF0p1H4Sgt7aWfipxORWTPp7o6prA3vxwtWhtug3GfpYls1pnBp4WA+j8vGIi5c2/hQRpGzPcQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.9.0" + rc-util "^5.20.1" + +rc-overflow@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.3.2.tgz#72ee49e85a1308d8d4e3bd53285dc1f3e0bcce2c" + integrity sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.37.0" + +rc-pagination@~3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-3.7.0.tgz#4c4332800688ec0fd3b2435c4772f7f8d4d7b50e" + integrity sha512-IxSzKapd13L91/195o1TPkKnCNw8gIR25UP1GCW/7c7n/slhld4npu2j2PB9IWjXm4SssaAaSAt2lscYog7wzg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.32.2" + +rc-picker@~3.14.6: + version "3.14.6" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-3.14.6.tgz#60fc34f9883272e10f6c593fa6d82e7e7a70781b" + integrity sha512-AdKKW0AqMwZsKvIpwUWDUnpuGKZVrbxVTZTNjcO+pViGkjC1EBcjMgxVe8tomOEaIHJL5Gd13vS8Rr3zzxWmag== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^1.5.0" + classnames "^2.2.1" + rc-util "^5.30.0" + +rc-progress@~3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.5.1.tgz#a3cdfd2fe04eb5c3d43fa1c69e7dd70c73b102ae" + integrity sha512-V6Amx6SbLRwPin/oD+k1vbPrO8+9Qf8zW1T8A7o83HdNafEVvAxPV5YsgtKFP+Ud5HghLj33zKOcEHrcrUGkfw== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-util "^5.16.1" + +rc-rate@~2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.12.0.tgz#0182deffed3b009cdcc61660da8746c39ed91ed5" + integrity sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.0.1" + +rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz#7bba61e6b3c604834980647cce6451914750d0cc" + integrity sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q== + dependencies: + "@babel/runtime" "^7.20.7" + classnames "^2.2.1" + rc-util "^5.38.0" + resize-observer-polyfill "^1.5.1" + +rc-segmented@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/rc-segmented/-/rc-segmented-2.2.2.tgz#a34f12ce6c0975fc3042ae7656bcd18e1744798e" + integrity sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-motion "^2.4.4" + rc-util "^5.17.0" + +rc-select@~14.10.0: + version "14.10.0" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.10.0.tgz#5f60e61ed7c9a83c8591616b1174a1c4ab2de0cd" + integrity sha512-TsIJTYafTTapCA32LLNpx/AD6ntepR1TG8jEVx35NiAAWCPymhUfuca8kRcUNd3WIGVMDcMKn9kkphoxEz+6Ag== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/trigger" "^1.5.0" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.3.1" + rc-util "^5.16.1" + rc-virtual-list "^3.5.2" + +rc-slider@~10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.4.0.tgz#efc016583fdea5f5dfb4f3dc61b6755a19e5f453" + integrity sha512-ZlpWjFhOlEf0w4Ng31avFBkXNNBj60NAcTPaIoiCxBkJ29wOtHSPMqv9PZeEoqmx64bpJkgK7kPa47HG4LPzww== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.5" + rc-util "^5.27.0" + +rc-steps@~6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-6.0.1.tgz#c2136cd0087733f6d509209a84a5c80dc29a274d" + integrity sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g== + dependencies: + "@babel/runtime" "^7.16.7" + classnames "^2.2.3" + rc-util "^5.16.1" + +rc-switch@~4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-4.1.0.tgz#f37d81b4e0c5afd1274fd85367b17306bf25e7d7" + integrity sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg== + dependencies: + "@babel/runtime" "^7.21.0" + classnames "^2.2.1" + rc-util "^5.30.0" + +rc-table@~7.35.2: + version "7.35.2" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.35.2.tgz#8fcd59e9342bf13fe131ca54c6105e71ab95588b" + integrity sha512-ZLIZdAEdfen21FI21xt2LDg9chQ7gc5Lpy4nkjWKPDgmQMnH0KJ8JQQzrd3zrEN16xzjiVdHHvRmi1RU8BtgYg== + dependencies: + "@babel/runtime" "^7.10.1" + "@rc-component/context" "^1.4.0" + classnames "^2.2.5" + rc-resize-observer "^1.1.0" + rc-util "^5.37.0" + rc-virtual-list "^3.11.1" + +rc-tabs@~12.13.1: + version "12.13.1" + resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-12.13.1.tgz#e28c5652dfed4e72eb27a75a2691754afd3e5f68" + integrity sha512-83u3l2QkO0UznCzdBLEk9WnNcT+imtmDmMT993sUUEOGnNQAmqOdev0XjeqrcvsAMe9CDpAWDFd7L/RZw+LVJQ== + dependencies: + "@babel/runtime" "^7.11.2" + classnames "2.x" + rc-dropdown "~4.1.0" + rc-menu "~9.12.0" + rc-motion "^2.6.2" + rc-resize-observer "^1.0.0" + rc-util "^5.34.1" + +rc-textarea@~1.5.0, rc-textarea@~1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-1.5.3.tgz#513e837d308584996c05f540f4f58645a3a8c89a" + integrity sha512-oH682ghHx++stFNYrosPRBfwsypywrTXpaD0/5Z8MPkUOnyOQUaY9ueL9tMu6BP1LfsuYQ1VLpg5OtshViLNgA== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-input "~1.3.5" + rc-resize-observer "^1.0.0" + rc-util "^5.27.0" + +rc-tooltip@~6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-6.1.2.tgz#33923ecfb2cf24347975093cbd0b048ab33c9567" + integrity sha512-89zwvybvCxGJu3+gGF8w5AXd4HHk6hIN7K0vZbkzjilVaEAIWPqc1fcyeUeP71n3VCcw7pTL9LyFupFbrx8gHw== + dependencies: + "@babel/runtime" "^7.11.2" + "@rc-component/trigger" "^1.18.0" + classnames "^2.3.1" + +rc-tree-select@~5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-5.15.0.tgz#8591f1dd28b043dde6fa1ca30c7acb198b160a42" + integrity sha512-YJHfdO6azFnR0/JuNBZLDptGE4/RGfVeHAafUIYcm2T3RBkL1O8aVqiHvwIyLzdK59ry0NLrByd+3TkfpRM+9Q== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-select "~14.10.0" + rc-tree "~5.8.1" + rc-util "^5.16.1" + +rc-tree@~5.8.1, rc-tree@~5.8.2: + version "5.8.2" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.8.2.tgz#ed3a3f7c56597bbeab3303407a9e1739bbf15621" + integrity sha512-xH/fcgLHWTLmrSuNphU8XAqV7CdaOQgm4KywlLGNoTMhDAcNR3GVNP6cZzb0GrKmIZ9yae+QLot/cAgUdPRMzg== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.16.1" + rc-virtual-list "^3.5.1" + +rc-upload@~4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-4.3.5.tgz#12fc69b2af74d08646a104828831bcaf44076eda" + integrity sha512-EHlKJbhkgFSQHliTj9v/2K5aEuFwfUQgZARzD7AmAPOneZEPiCNF3n6PEWIuqz9h7oq6FuXgdR67sC5BWFxJbA== + dependencies: + "@babel/runtime" "^7.18.3" + classnames "^2.2.5" + rc-util "^5.2.0" + +rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.28.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1: + version "5.38.1" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.38.1.tgz#4915503b89855f5c5cd9afd4c72a7a17568777bb" + integrity sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng== + dependencies: + "@babel/runtime" "^7.18.3" + react-is "^18.2.0" + +rc-virtual-list@^3.11.1, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: + version "3.11.3" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.11.3.tgz#77d4e12e20c1ba314b43c0e37e118296674c5401" + integrity sha512-tu5UtrMk/AXonHwHxUogdXAWynaXsrx1i6dsgg+lOo/KJSF8oBAcprh1z5J3xgnPJD5hXxTL58F8s8onokdt0Q== + dependencies: + "@babel/runtime" "^7.20.0" + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.36.0" + react-app-polyfill@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" @@ -9530,25 +10100,30 @@ react-is@^17.0.2: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + react-refresh@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== -react-router-dom@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.0.2.tgz#860cefa697b9d4965eced3f91e82cdbc5995f3ad" - integrity sha512-cOpJ4B6raFutr0EG8O/M2fEoyQmwvZWomf1c6W2YXBZuFBx8oTk/zqjXghwScyhfrtnt0lANXV2182NQblRxFA== +react-router-dom@6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.21.0.tgz#aa4c6bc046a8e8723095bc09b3c0ab2254532712" + integrity sha512-1dUdVj3cwc1npzJaf23gulB562ESNvxf7E4x8upNJycqyUm5BRRZ6dd3LrlzhtLaMrwOCO8R0zoiYxdaJx4LlQ== dependencies: - history "^5.1.0" - react-router "6.0.2" + "@remix-run/router" "1.14.0" + react-router "6.21.0" -react-router@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.0.2.tgz#bd2b0fa84fd1d152671e9f654d9c0b1f5a7c86da" - integrity sha512-8/Wm3Ed8t7TuedXjAvV39+c8j0vwrI5qVsYqjFr5WkJjsJpEvNSoLRUbtqSEYzqaTUj1IV+sbPJxvO+accvU0Q== +react-router@6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.21.0.tgz#6fe3e59877aca3dccceec1801d26991ddf42d12b" + integrity sha512-hGZ0HXbwz3zw52pLZV3j3+ec+m/PQ9cTpBvqjFQmy2XVUWGn5MD+31oXHb6dVTxYzmAeaiUBYjkoNz66n3RGCg== dependencies: - history "^5.1.0" + "@remix-run/router" "1.14.0" react-scripts@4.0.3: version "4.0.3" @@ -9745,6 +10320,11 @@ regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + regenerator-transform@^0.14.2: version "0.14.5" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" @@ -9895,6 +10475,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -10180,6 +10765,13 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" +scroll-into-view-if-needed@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz#fa9524518c799b45a2ef6bbffb92bcad0296d01f" + integrity sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ== + dependencies: + compute-scroll-into-view "^3.0.2" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -10664,6 +11256,11 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== + string-length@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" @@ -10830,6 +11427,11 @@ stylis@^4.0.10, stylis@^4.0.3: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.10.tgz#446512d1097197ab3f02fb3c258358c3f7a14240" integrity sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg== +stylis@^4.0.13: + version "4.3.0" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" + integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -11004,6 +11606,11 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== +throttle-debounce@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" + integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== + through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -11076,6 +11683,11 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"