diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index ecdc497..0000000
--- a/.eslintrc
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "extends": [
- "react-app"
- ],
- "plugins": [
- "prettier",
- "react-hooks"
- ],
- "rules": {
- "prettier/prettier": [
- "error",
- {
- "singleQuote": true
- }
- ],
- "react-hooks/rules-of-hooks": "error",
- "react-hooks/exhaustive-deps": "warn",
- "quotes": [
- 2,
- "single",
- {
- "avoidEscape": true
- }
- ]
- }
-}
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..2d718fd
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,31 @@
+module.exports = {
+ env: {
+ browser: true,
+ commonjs: true,
+ es2021: true,
+ },
+ // extends: ['plugin:react/recommended'],
+ overrides: [],
+ parserOptions: {
+ sourceType: "module",
+ ecmaFeatures: {
+ jsx: true,
+ modules: true,
+ ecmaVersion: 12,
+ },
+ },
+ // plugins: ['react'],
+ rules: {
+ // quotes: [2, 'single', { allowTemplateLiterals: true }],
+ // 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+ "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
+ "no-restricted-syntax": "off",
+ "comma-dangle": "off",
+ "no-unused-vars": "warn",
+ "no-underscore-dangle": "off",
+ "react/jsx-filename-extension": "off",
+ "react/function-component-definition": "off",
+ "react/react-in-jsx-scope": "off",
+ "react/prop-types": "off",
+ },
+};
diff --git a/package.json b/package.json
index 68645e4..a976f6b 100644
--- a/package.json
+++ b/package.json
@@ -3,9 +3,13 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@date-io/date-fns": "^1.3.13",
+ "@emotion/react": "^11.10.6",
+ "@emotion/styled": "^11.10.6",
"@material-ui/core": "^4.9.0",
"@material-ui/pickers": "^3.2.10",
+ "@mui/icons-material": "^5.11.11",
+ "@mui/joy": "^5.0.0-alpha.72",
+ "@mui/material": "^5.11.14",
"@testing-library/jest-dom": "^5.0.2",
"@testing-library/react": "^9.4.0",
"@testing-library/user-event": "^8.1.0",
@@ -14,8 +18,9 @@
"lodash": "^4.17.15",
"moment": "^2.24.0",
"prop-types": "^15.7.2",
- "react": "^16.12.0",
- "react-dom": "^16.12.0",
+ "react": "^18.2.0",
+ "react-calendar": "^4.1.0",
+ "react-dom": "^18.2.0",
"react-scripts": "3.3.0",
"yup": "^0.28.1"
},
@@ -46,4 +51,4 @@
"eslint-plugin-react-hooks": "^2.3.0",
"prettier": "1.19.1"
}
-}
\ No newline at end of file
+}
diff --git a/public/imag.png b/public/imag.png
new file mode 100644
index 0000000..74b3410
Binary files /dev/null and b/public/imag.png differ
diff --git a/src/App.js b/src/App.js
index bb41053..fc01115 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,14 +1,12 @@
-import React from 'react';
-import MaterialLayout from './components/Layout/MaterialLayout';
-import CheckoutPage from './components/CheckoutPage';
+import React from "react";
+import MaterialLayout from "./components/Layout/MaterialLayout";
+import AppointmentForm from "./components/AppointmentForm";
function App() {
return (
-
-
-
-
-
+
+
+
);
}
diff --git a/src/components/AppointmentForm/Appointment/index.js b/src/components/AppointmentForm/Appointment/index.js
new file mode 100644
index 0000000..5497920
--- /dev/null
+++ b/src/components/AppointmentForm/Appointment/index.js
@@ -0,0 +1,65 @@
+import React, { useState } from "react";
+import Calendar from "react-calendar";
+import { Typography } from "@material-ui/core";
+import "react-calendar/dist/Calendar.css";
+import Radio from "@mui/material/Radio";
+import RadioGroup from "@mui/material/RadioGroup";
+import FormControlLabel from "@mui/material/FormControlLabel";
+
+function Appointment() {
+ const [value, onChange] = useState(new Date());
+
+ return (
+
+
+
+
+
+ }
+ label="11:30 AM - 2:30 PM EST"
+ />
+ }
+ label="4:00 PM - 5:30 PM EST"
+ />
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque
+ interdum, diam vel fermentum posuere, enim massa.
+
+
+
+ );
+}
+export default Appointment;
diff --git a/src/components/AppointmentForm/ButtonAppBar.js b/src/components/AppointmentForm/ButtonAppBar.js
new file mode 100644
index 0000000..88bece6
--- /dev/null
+++ b/src/components/AppointmentForm/ButtonAppBar.js
@@ -0,0 +1,76 @@
+import * as React from "react";
+import Box from "@mui/material/Box";
+import { makeStyles } from "@material-ui/core/styles";
+import { Button, CircularProgress } from "@material-ui/core";
+
+const useStyles = makeStyles((theme) => ({
+ backButton: {
+ backgroundColor: theme.palette.primary.main,
+ color: theme.palette.primary.contrastText,
+ "&:hover": {
+ backgroundColor: theme.palette.primary.dark,
+ },
+ },
+ nextButton: {
+ backgroundColor: theme.palette.primary.main,
+ color: theme.palette.primary.contrastText,
+ "& .MuiButton-root.Mui-disabled": {
+ backgroundColor: theme.palette.primary.dark,
+ color: theme.palette.primary.contrastText,
+ },
+ "&:hover": {
+ backgroundColor: theme.palette.primary.dark,
+ },
+ },
+}));
+
+export default function ButtonAppBar(props) {
+ const classes = useStyles();
+ const {
+ nextHide,
+ _handleBack,
+ isSubmitting,
+ isNextdisabled,
+ isLastStep,
+ } = props;
+
+ return (
+
+
+
+ Back
+
+ {!nextHide ? (
+
+ {isLastStep ? "Confirm appointment" : "Next"}
+
+ ) : (
+ ""
+ )}
+
+ {isSubmitting && }
+
+
+ );
+}
diff --git a/src/components/AppointmentForm/Client/ClientInfo/ExistingCustomerAddress.jsx b/src/components/AppointmentForm/Client/ClientInfo/ExistingCustomerAddress.jsx
new file mode 100644
index 0000000..0a57224
--- /dev/null
+++ b/src/components/AppointmentForm/Client/ClientInfo/ExistingCustomerAddress.jsx
@@ -0,0 +1,38 @@
+import React from "react";
+import { Typography } from "@material-ui/core";
+import RadioGroup from "@mui/material/RadioGroup";
+import FormControlLabel from "@mui/material/FormControlLabel";
+import Radio from "@mui/material/Radio";
+
+const ExistingCustomerAddress = () => {
+ return (
+
+
+ Address where our team is needed
+
+
+
+ }
+ />
+ }
+ />
+
+
+ );
+};
+
+export default ExistingCustomerAddress;
diff --git a/src/components/AppointmentForm/Client/ClientInfo/ExistingCustomerDetail.jsx b/src/components/AppointmentForm/Client/ClientInfo/ExistingCustomerDetail.jsx
new file mode 100644
index 0000000..3b93b66
--- /dev/null
+++ b/src/components/AppointmentForm/Client/ClientInfo/ExistingCustomerDetail.jsx
@@ -0,0 +1,71 @@
+import React, { useEffect, useState } from "react";
+import { Typography } from "@material-ui/core";
+import InputAdornment from "@mui/material/InputAdornment";
+import TextField from "@mui/material/TextField";
+import LocalPhoneOutlinedIcon from "@mui/icons-material/LocalPhoneOutlined";
+
+const ExistingCustomerDetail = (props) => {
+ const { _setClientFormData, setIsNextdisabled } = props;
+ const [accountPhoneNumber, setAccountPhoneNumber] = useState("");
+
+ useEffect(() => {
+ if (accountPhoneNumber === "") {
+ setIsNextdisabled(true);
+ } else {
+ setIsNextdisabled(false);
+ }
+ }, [accountPhoneNumber]);
+
+ return (
+
+
+ Existing customer
+
+
+
+
+ Please enter your account phone number
+
+
+ {
+ setAccountPhoneNumber(event.target.value);
+ _setClientFormData(event.target.name, event.target.value);
+ }}
+ InputProps={{
+ startAdornment: (
+
+
+
+ ),
+ }}
+ />
+
+
+ );
+};
+
+export default ExistingCustomerDetail;
diff --git a/src/components/AppointmentForm/Client/ClientInfo/NewCustomerAddress.jsx b/src/components/AppointmentForm/Client/ClientInfo/NewCustomerAddress.jsx
new file mode 100644
index 0000000..e88c21e
--- /dev/null
+++ b/src/components/AppointmentForm/Client/ClientInfo/NewCustomerAddress.jsx
@@ -0,0 +1,175 @@
+import React from "react";
+import { Typography } from "@material-ui/core";
+import InputLabel from "@mui/material/InputLabel";
+import TextField from "@mui/material/TextField";
+import MenuItem from "@mui/material/MenuItem";
+import FormControl from "@mui/material/FormControl";
+import Select from "@mui/material/Select";
+import Checkbox from "@mui/material/Checkbox";
+
+const NewCustomerAddress = () => {
+ const [state, setState] = React.useState("");
+
+ const handleChange = (event) => {
+ setState(event.target.value);
+ };
+ return (
+
+
+ Address where our team is needed
+
+
+
+
+ Please enter your details below
+
+
+
+
+
+
+
+
+ state
+
+
+ {" "}
+ None {" "}
+
+ Alabama
+ Alaska
+ Arizona
+ Arkansas
+ California
+ Colorado
+ Connecticut
+ Delaware
+ District Of Columbia
+ Florida
+ Georgia
+ Hawaii
+ Idaho
+ Illinois
+ Indiana
+ Iowa
+ Kansas
+ Kentucky
+ Louisiana
+ Maine
+ Maryland
+ Massachusetts
+ Michigan
+ Minnesota
+ Mississippi
+ Missouri
+ Montana
+ Nebraska
+ Nevada
+ New Hampshire
+ New Jersey
+ New Mexico
+ New York
+ North Carolina
+ North Dakota
+ Ohio
+ Oklahoma
+ Oregon
+ Pennsylvania
+ Rhode Island
+ South Carolina
+ South Dakota
+ Tennessee
+ Texas
+ Utah
+ Vermont
+ Virginia
+ Washington
+ West Virginia
+ Wisconsin
+ Wyoming
+
+
+
+
+
+
+
+
+
+
+ {" "}
+ I own this residence
+
+
+
+
+
+ );
+};
+
+export default NewCustomerAddress;
diff --git a/src/components/AppointmentForm/Client/ClientInfo/NewCustomerDetail.jsx b/src/components/AppointmentForm/Client/ClientInfo/NewCustomerDetail.jsx
new file mode 100644
index 0000000..3a47343
--- /dev/null
+++ b/src/components/AppointmentForm/Client/ClientInfo/NewCustomerDetail.jsx
@@ -0,0 +1,86 @@
+import React, { useEffect, useState } from "react";
+import { Typography } from "@material-ui/core";
+import InputAdornment from "@mui/material/InputAdornment";
+import TextField from "@mui/material/TextField";
+import PersonOutlineOutlinedIcon from "@mui/icons-material/PersonOutlineOutlined";
+import EmailOutlinedIcon from "@mui/icons-material/EmailOutlined";
+import LocalPhoneOutlinedIcon from "@mui/icons-material/LocalPhoneOutlined";
+
+const NewCustomerDetail = (props) => {
+ const { _setClientFormData, setIsNextdisabled } = props;
+
+ useEffect(() => {
+ setIsNextdisabled(false);
+ }, []);
+ return (
+
+
+ New customer
+
+
+
+
+ Please enter your account phone number
+
+
+
+
+
+ ),
+ }}
+ />
+
+
+
+ ),
+ }}
+ />
+
+
+
+ ),
+ }}
+ />
+
+
+ );
+};
+
+export default NewCustomerDetail;
diff --git a/src/components/AppointmentForm/Client/CustomerAddress.jsx b/src/components/AppointmentForm/Client/CustomerAddress.jsx
new file mode 100644
index 0000000..c4aa6dc
--- /dev/null
+++ b/src/components/AppointmentForm/Client/CustomerAddress.jsx
@@ -0,0 +1,25 @@
+import React, { useEffect, useState } from "react";
+import NewCustomerAddress from "./ClientInfo/NewCustomerAddress";
+import ExistingCustomerAddress from "./ClientInfo/ExistingCustomerAddress";
+
+const CustomerAddress = (props) => {
+ const { customerType, _setClientFormData, setIsNextdisabled } = props;
+
+ return (
+ <>
+ {customerType === "newCustomer" ? (
+
+ ) : (
+
+ )}
+ >
+ );
+};
+
+export default CustomerAddress;
diff --git a/src/components/AppointmentForm/Client/CustomerDetail.jsx b/src/components/AppointmentForm/Client/CustomerDetail.jsx
new file mode 100644
index 0000000..718a681
--- /dev/null
+++ b/src/components/AppointmentForm/Client/CustomerDetail.jsx
@@ -0,0 +1,34 @@
+import React, { useEffect, useState } from "react";
+import NewCustomerDetail from "./ClientInfo/NewCustomerDetail";
+import ExistingCustomerDetail from "./ClientInfo/ExistingCustomerDetail";
+
+const CustomerDetail = (props) => {
+ const {
+ customerType,
+ _setClientFormData,
+ setIsNextdisabled,
+ setNextHide,
+ } = props;
+
+ useEffect(() => {
+ setNextHide(false);
+ }, []);
+
+ return (
+ <>
+ {customerType === "newCustomer" ? (
+
+ ) : (
+
+ )}
+ >
+ );
+};
+
+export default CustomerDetail;
diff --git a/src/components/AppointmentForm/Client/CustomerType.jsx b/src/components/AppointmentForm/Client/CustomerType.jsx
new file mode 100644
index 0000000..7582b57
--- /dev/null
+++ b/src/components/AppointmentForm/Client/CustomerType.jsx
@@ -0,0 +1,42 @@
+import React, { useEffect, useState } from "react";
+import { Typography, Button } from "@material-ui/core";
+export default function CustomerType(props) {
+ const { setCustomerType, setNextHide, _handleNextStep } = props;
+
+ useEffect(() => {
+ setNextHide(true);
+ }, []);
+
+ return (
+
+
+ FIX
+
+ {/* */}
+
+
+ {
+ setCustomerType("existingCustomer");
+ _handleNextStep();
+ }}
+ className="exist"
+ style={{ background: "#007BFF" }}
+ >
+ I am an existing customer
+
+
+ {
+ setCustomerType("newCustomer");
+ _handleNextStep();
+ }}
+ className="new"
+ style={{ background: "#EDF1F7", color: "black" }}
+ >
+ I am a new customer
+
+
+
+ );
+}
diff --git a/src/components/AppointmentForm/Client/index.js b/src/components/AppointmentForm/Client/index.js
new file mode 100644
index 0000000..d87d48f
--- /dev/null
+++ b/src/components/AppointmentForm/Client/index.js
@@ -0,0 +1,58 @@
+import React, { useEffect, useState } from "react";
+import CustomerType from "./CustomerType";
+import CustomerDetail from "./CustomerDetail";
+import CustomerAddress from "./CustomerAddress";
+
+export default function Client(props) {
+ const {
+ clientFormField,
+ setClientFormField,
+ clientActiveStep,
+ _handleNext,
+ setIsNextdisabled,
+ setNextHide,
+ } = props;
+ const [customerType, setCustomerType] = useState("");
+ // const currentValidationSchema = validationSchema[activeStep];
+
+ function _setClientFormData(keyName, value) {
+ setClientFormField({ ...clientFormField, [keyName]: value });
+ }
+
+ function _renderStepContent(step) {
+ switch (step) {
+ case 0:
+ return (
+
+ );
+ case 1:
+ return (
+
+ );
+ case 2:
+ return (
+
+ );
+ default:
+ return Not Found
;
+ }
+ }
+
+ return (
+ {_renderStepContent(clientActiveStep)}
+ );
+}
diff --git a/src/components/AppointmentForm/Confirm/index.js b/src/components/AppointmentForm/Confirm/index.js
new file mode 100644
index 0000000..0ede99c
--- /dev/null
+++ b/src/components/AppointmentForm/Confirm/index.js
@@ -0,0 +1,127 @@
+import React from "react";
+import { Grid, Typography } from "@material-ui/core";
+import TodayIcon from "@mui/icons-material/Today";
+import AccessTimeIcon from "@mui/icons-material/AccessTime";
+import PlaceIcon from "@mui/icons-material/Place";
+import LocalPhoneOutlinedIcon from "@mui/icons-material/LocalPhoneOutlined";
+import Checkbox from "@mui/material/Checkbox";
+
+export default function Confirm() {
+ return (
+
+
+ Please review and confirm appointment
+
+
+
+
+
+
+ March 30, 2023
+
+
+
+
+
+
11:30 AM - 2:30 PM EST
+
+
+
+
+
+
+ March 30, 202365 Westington St. Suit 5C, Brooklyn, New York, NY
+ 11249
+
+
+
+
+
+
+ 492-990-2789
+
+
+
+
+
+
+
+
+ I accept the{" "}
+ terms and conditions
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque
+ interdum, diam vel fermentum posuere, enim massa.
+
+
+ );
+}
diff --git a/src/components/AppointmentForm/Description/AdditionalInfoStep.jsx b/src/components/AppointmentForm/Description/AdditionalInfoStep.jsx
new file mode 100644
index 0000000..4a57b8b
--- /dev/null
+++ b/src/components/AppointmentForm/Description/AdditionalInfoStep.jsx
@@ -0,0 +1,60 @@
+import React, { useEffect, useState } from "react";
+import { Typography } from "@material-ui/core";
+import TextField from "@mui/material/TextField";
+
+const AdditonalInfoStep = (props) => {
+ const { _setDescriptionFormData, setIsNextdisabled } = props;
+ const [AdditionalInfo, setAdditionalInfo] = useState("");
+
+ const handleChange = (event) => {
+ setAdditionalInfo(event.target.value);
+ _setDescriptionFormData("AdditionalInfo", event.target.value);
+ };
+
+ useEffect(() => {
+ if (AdditionalInfo === "") {
+ setIsNextdisabled(true);
+ } else {
+ setIsNextdisabled(false);
+ }
+ }, [AdditionalInfo]);
+
+ return (
+
+
+ Additional information
+
+
+
+
+ Please share any information you'd like about your equipment, project,
+ or issues you are facing.
+
+
+
+
+
+
+ );
+};
+
+export default AdditonalInfoStep;
diff --git a/src/components/AppointmentForm/Description/DiagnosticFeeStep.jsx b/src/components/AppointmentForm/Description/DiagnosticFeeStep.jsx
new file mode 100644
index 0000000..effc48f
--- /dev/null
+++ b/src/components/AppointmentForm/Description/DiagnosticFeeStep.jsx
@@ -0,0 +1,65 @@
+import React, { useEffect, useState } from "react";
+import { Typography } from "@material-ui/core";
+import Checkbox from "@mui/material/Checkbox";
+
+const DiagnosticFeeStep = (props) => {
+ const { _setDescriptionFormData, setIsNextdisabled } = props;
+ const [isChecked, setIschecked] = useState(false);
+
+ useEffect(() => {
+ if (isChecked) {
+ setIsNextdisabled(false);
+ } else {
+ setIsNextdisabled(true);
+ }
+ _setDescriptionFormData("DiagnosticFee", isChecked);
+ }, [isChecked]);
+
+ return (
+
+
+ This visit requires a diagnostic fee of $99
+
+
+
+
+ Pellentesque bibendum sapien at dui accumsan, condimentum cursus
+ turpis porta. Suspendisse euismod risus nibh, sit amet tristique elit
+ posuere in. Sed ut lacinia nisl. Sed non leo auctor est porta
+ fermentum sed eu erat.
+
+
+
+ setIschecked(!isChecked)}
+ />
+
+ I understand there is a $99 diagnostic cost
+
+
+
+ );
+};
+
+export default DiagnosticFeeStep;
diff --git a/src/components/AppointmentForm/Description/SystemAgeStep.jsx b/src/components/AppointmentForm/Description/SystemAgeStep.jsx
new file mode 100644
index 0000000..7363219
--- /dev/null
+++ b/src/components/AppointmentForm/Description/SystemAgeStep.jsx
@@ -0,0 +1,141 @@
+import React, { useEffect, useState } from "react";
+import { Typography } from "@material-ui/core";
+/// import { InputField, DatePickerField } from '../../FormFields';
+import Radio from "@mui/joy/Radio";
+import RadioGroup from "@mui/joy/RadioGroup";
+import Sheet from "@mui/joy/Sheet";
+export default function SystemAgeStep(props) {
+ const { _setDescriptionFormData, setIsNextdisabled } = props;
+ const [unitLocated, setUnitLocated] = useState("");
+ const [systemAge, setSystemAge] = useState("");
+ useEffect(() => {
+ if (systemAge !== "" && unitLocated !== "") {
+ setIsNextdisabled(false);
+ }
+ }, [unitLocated, systemAge]);
+
+ return (
+
+
+ What is the approximate age of your system?
+
+
+
+ {[
+ "Less than 5 years",
+ "6 to 9 years old",
+ "10 to 15 years old",
+ "Not sure",
+ ].map((value) => (
+
+ {
+ _setDescriptionFormData(event.target.name, event.target.value);
+ setSystemAge(event.target.value);
+ }}
+ slotProps={{
+ label: ({ checked }) => ({
+ sx: {
+ fontWeight: "lg",
+ fontSize: "md",
+ color: checked ? "text.primary" : "text.secondary",
+ },
+ }),
+ action: ({ checked }) => ({
+ sx: (theme) => ({
+ ...(checked && {
+ "--variant-borderWidth": "2px",
+ "&&": {
+ // && to increase the specificity to win the base :hover styles
+ borderColor: theme.vars.palette.primary[500],
+ },
+ }),
+ }),
+ }),
+ }}
+ />
+
+ ))}
+
+
+ Where is the leaking unit located?
+
+
+ {[
+ "Attic",
+ "Upstairs",
+ "Main floor",
+ "Basement",
+ "Garage",
+ "Outside",
+ "Other",
+ ].map((value) => (
+
+ {
+ _setDescriptionFormData(event.target.name, event.target.value);
+ setUnitLocated(event.target.value);
+ }}
+ slotProps={{
+ label: ({ checked }) => ({
+ sx: {
+ fontWeight: "lg",
+ fontSize: "md",
+ color: checked ? "text.primary" : "text.secondary",
+ },
+ }),
+ action: ({ checked }) => ({
+ sx: (theme) => ({
+ ...(checked && {
+ "--variant-borderWidth": "2px",
+ "&&": {
+ // && to increase the specificity to win the base :hover styles
+ borderColor: theme.vars.palette.primary[500],
+ },
+ }),
+ }),
+ }),
+ }}
+ />
+
+ ))}
+
+
+ );
+}
diff --git a/src/components/AppointmentForm/Description/index.js b/src/components/AppointmentForm/Description/index.js
new file mode 100644
index 0000000..aec61f6
--- /dev/null
+++ b/src/components/AppointmentForm/Description/index.js
@@ -0,0 +1,56 @@
+import React, { useEffect, useState } from "react";
+import SystemAgeStep from "./SystemAgeStep";
+import DiagnosticFeeStep from "./DiagnosticFeeStep";
+import AdditionalInfoStep from "./AdditionalInfoStep";
+
+export default function Problem(props) {
+ const {
+ _handleNext,
+ descriptionActiveStep,
+ descriptionFormField,
+ setDescriptionFormField,
+ setIsNextdisabled,
+ setNextHide,
+ } = props;
+
+ useEffect(() => {
+ setNextHide(false);
+ }, []);
+
+ function _setDescriptionFormData(keyName, value) {
+ setDescriptionFormField({ ...descriptionFormField, [keyName]: value });
+ }
+
+ function _renderStepContent(step) {
+ switch (step) {
+ case 0:
+ return (
+
+ );
+ case 1:
+ return (
+
+ );
+ case 2:
+ return (
+
+ );
+ default:
+ return Not Found
;
+ }
+ }
+
+ return (
+ {_renderStepContent(descriptionActiveStep)}
+ );
+}
diff --git a/src/components/AppointmentForm/FormModel/appointmentFormModel.js b/src/components/AppointmentForm/FormModel/appointmentFormModel.js
new file mode 100644
index 0000000..e927c2e
--- /dev/null
+++ b/src/components/AppointmentForm/FormModel/appointmentFormModel.js
@@ -0,0 +1,52 @@
+export default {
+ formId: "checkoutForm",
+ problemFormField: {
+ service: {
+ name: "service",
+ label: "Service*",
+ requiredErrorMsg: "service name is required",
+ },
+ serviceType: {
+ name: "serviceType",
+ label: "Service Type*",
+ requiredErrorMsg: "service type is required",
+ },
+ serviceIssues: {
+ name: "serviceIssues",
+ label: "Service Issues*",
+ requiredErrorMsg: "service issues is required",
+ },
+ },
+ descriptionFormIntialValues: {
+ systemAge: {
+ name: "systemAge",
+ label: "System Age*",
+ },
+ unitLocated: {
+ name: "unitLocated",
+ label: "unit Located*",
+ },
+ DiagnosticFee: {
+ name: "DiagnosticFee",
+ label: "Diagnostic Fee*",
+ },
+ AdditionalInfo: {
+ name: "AdditionalInfo",
+ label: "Additional Info*",
+ },
+ },
+ ClientFormIntialValues: {
+ clientType: {
+ name: "clientType",
+ label: "Client Type*",
+ },
+ clientDetail: {
+ name: "clientDetail",
+ label: "Client Detail*",
+ },
+ clientAddress: {
+ name: "clientAddress",
+ label: "Client Address*",
+ },
+ },
+};
diff --git a/src/components/AppointmentForm/FormModel/formInitialValues.js b/src/components/AppointmentForm/FormModel/formInitialValues.js
new file mode 100644
index 0000000..0a80b72
--- /dev/null
+++ b/src/components/AppointmentForm/FormModel/formInitialValues.js
@@ -0,0 +1,30 @@
+import AppointmentFormModel from "./appointmentFormModel";
+const {
+ problemFormField: { service, serviceType, serviceIssues },
+ descriptionFormIntialValues: {
+ systemAge,
+ unitLocated,
+ DiagnosticFee,
+ AdditionalInfo,
+ },
+ ClientFormIntialValues: { clientType, clientDetail, clientAddress },
+} = AppointmentFormModel;
+
+export default {
+ problemIntialValues: {
+ [service.name]: "",
+ [serviceType.name]: "",
+ [serviceIssues.name]: "",
+ },
+ descriptionIntialValues: {
+ [systemAge.name]: "",
+ [unitLocated.name]: "",
+ [DiagnosticFee.name]: false,
+ [AdditionalInfo.name]: "",
+ },
+ clientIntialValues: {
+ [clientType.name]: "",
+ [clientDetail.name]: "",
+ [clientAddress.name]: "",
+ },
+};
diff --git a/src/components/CheckoutPage/FormModel/validationSchema.js b/src/components/AppointmentForm/FormModel/validationSchema.js
similarity index 100%
rename from src/components/CheckoutPage/FormModel/validationSchema.js
rename to src/components/AppointmentForm/FormModel/validationSchema.js
diff --git a/src/components/AppointmentForm/Problem/IssuesStep.jsx b/src/components/AppointmentForm/Problem/IssuesStep.jsx
new file mode 100644
index 0000000..39baec0
--- /dev/null
+++ b/src/components/AppointmentForm/Problem/IssuesStep.jsx
@@ -0,0 +1,86 @@
+import React, { useState } from "react";
+import { Typography } from "@material-ui/core";
+import Button from "@mui/material/Button";
+import KeyboardArrowRightIcon from "@mui/icons-material/KeyboardArrowRight";
+
+const IssuesStep = (props) => {
+ const { _setProblemFormData, _handleNext } = props;
+
+ const faultList = [
+ {
+ id: 1,
+ label: "No heat",
+ },
+ {
+ id: 2,
+ label: "No cooling",
+ },
+ {
+ id: 3,
+ label: "Water leak from HVAC unit",
+ },
+ {
+ id: 4,
+ label: "Noise",
+ },
+ {
+ id: 5,
+ label: "Thermostat",
+ },
+ {
+ id: 6,
+ label: "Gas leak",
+ },
+ {
+ id: 7,
+ label: "Air quality",
+ },
+ ];
+
+ return (
+
+
+ Heating & Air
+
+
+ {React.Children.toArray(
+ faultList.map((item) => (
+ {
+ _setProblemFormData(event.target.name, event.target.value);
+ _handleNext();
+ }}
+ style={{
+ background: "#F8FBFD",
+ color: "black",
+ border: "1px solid #D3D7E1",
+ borderRadius: "8px",
+ justifyContent: "space-between",
+ fontFamily: "poppins",
+ fontSize: "16px",
+ fontWeight: "400",
+ textTransform: "none",
+ }}
+ endIcon={ }
+ >
+ {item?.label}
+
+ ))
+ )}
+
+
+ );
+};
+
+export default IssuesStep;
diff --git a/src/components/AppointmentForm/Problem/ServiceStep.jsx b/src/components/AppointmentForm/Problem/ServiceStep.jsx
new file mode 100644
index 0000000..6b6c6fe
--- /dev/null
+++ b/src/components/AppointmentForm/Problem/ServiceStep.jsx
@@ -0,0 +1,64 @@
+import React from "react";
+import { Typography } from "@material-ui/core";
+import Radio from "@mui/joy/Radio";
+import RadioGroup from "@mui/joy/RadioGroup";
+import Sheet from "@mui/joy/Sheet";
+
+const ServiceStep = (props) => {
+ const services = ["Plumbing", "Heating & Air", "Electrical"];
+ const { _setProblemFormData, _handleNextStep } = props;
+
+ return (
+
+
+ What do you need help with?
+
+
+
+ {services.map((value) => (
+
+ {
+ _setProblemFormData(event.target.name, event.target.value);
+ _handleNextStep();
+ }}
+ sx={{ flexGrow: 1, flexDirection: "row-reverse" }}
+ slotProps={{
+ action: ({ checked }) => ({
+ sx: (theme) => ({
+ ...(checked && {
+ inset: -1,
+ border: "2px solid",
+ borderColor: theme.vars.palette.primary[500],
+ }),
+ }),
+ }),
+ }}
+ />
+
+ ))}
+
+
+ );
+};
+export default ServiceStep;
diff --git a/src/components/AppointmentForm/Problem/ServiceTypeStep.jsx b/src/components/AppointmentForm/Problem/ServiceTypeStep.jsx
new file mode 100644
index 0000000..c6d27f0
--- /dev/null
+++ b/src/components/AppointmentForm/Problem/ServiceTypeStep.jsx
@@ -0,0 +1,70 @@
+import React from "react";
+import { Typography } from "@material-ui/core";
+import Button from "@mui/material/Button";
+import ConstructionIcon from "@mui/icons-material/Construction";
+import EventIcon from "@mui/icons-material/Event";
+import RepeatIcon from "@mui/icons-material/Repeat";
+
+const ServiceTypeStep = (props) => {
+ const { _setProblemFormData, _handleNextStep } = props;
+
+ const serviceTypeList = [
+ {
+ id: 1,
+ label: "Repair and service",
+ icon: ,
+ },
+ {
+ id: 2,
+ label: "New equipment estimate",
+ icon: ,
+ },
+ {
+ id: 3,
+ label: "Preventive maintenance",
+ icon: ,
+ },
+ ];
+
+ return (
+
+
+ What type of service do you need?
+
+
+
+ {React.Children.toArray(
+ serviceTypeList.map((item) => (
+ {
+ _setProblemFormData(event.target.name, event.target.value);
+ _handleNextStep();
+ }}
+ variant="outlined"
+ startIcon={item?.icon}
+ style={{
+ marginRight: "auto",
+ marginLeft: "auto",
+ }}
+ >
+ {item?.label}
+
+ ))
+ )}
+
+
+ );
+};
+
+export default ServiceTypeStep;
diff --git a/src/components/AppointmentForm/Problem/index.jsx b/src/components/AppointmentForm/Problem/index.jsx
new file mode 100644
index 0000000..6722ca2
--- /dev/null
+++ b/src/components/AppointmentForm/Problem/index.jsx
@@ -0,0 +1,68 @@
+import React, { useEffect, useState } from "react";
+import { Button } from "@material-ui/core";
+import ServiceStep from "./ServiceStep";
+import ServiceTypeStep from "./ServiceTypeStep";
+import IssuesStep from "./IssuesStep";
+import useStyles from "../styles";
+
+export default function Problem(props) {
+ const {
+ _handleNext,
+ problemActiveStep,
+ setProblemActiveStep,
+ setProblemFormField,
+ problemFormField,
+ } = props;
+ const classes = useStyles();
+
+ // const currentValidationSchema = validationSchema[activeStep];
+
+ function _handleBack() {
+ setProblemActiveStep(problemActiveStep - 1);
+ }
+
+ function _setProblemFormData(keyName, value) {
+ setProblemFormField({ ...problemFormField, [keyName]: value });
+ }
+
+ function _renderStepContent(step) {
+ switch (step) {
+ case 0:
+ return (
+
+ );
+ case 1:
+ return (
+
+ );
+ case 2:
+ return (
+
+ );
+ default:
+ return Not Found
;
+ }
+ }
+
+ return (
+
+ {_renderStepContent(problemActiveStep)}
+
+ {problemActiveStep !== 0 && (
+
+ Back
+
+ )}
+
+
+ );
+}
diff --git a/src/components/AppointmentForm/ReviewOrder/CleintInfo/ExistingCustomerStepone.jsx b/src/components/AppointmentForm/ReviewOrder/CleintInfo/ExistingCustomerStepone.jsx
new file mode 100644
index 0000000..53a104b
--- /dev/null
+++ b/src/components/AppointmentForm/ReviewOrder/CleintInfo/ExistingCustomerStepone.jsx
@@ -0,0 +1,50 @@
+import React from 'react';
+import { Typography } from '@material-ui/core';
+//import TextField from '@mui/material/TextField';
+// import Box from '@mui/material/Box';
+// import Input from '@mui/material/Input';
+// import InputLabel from '@mui/material/InputLabel';
+import InputAdornment from '@mui/material/InputAdornment';
+// import FormControl from '@mui/material/FormControl';
+import TextField from '@mui/material/TextField';
+//import AccountCircle from '@mui/icons-material/AccountCircle';
+import LocalPhoneOutlinedIcon from '@mui/icons-material/LocalPhoneOutlined';
+
+ const ExistingCustomerStepone = () =>{
+ return (
+
+
+ Existing customer
+
+
+
+
+ Please enter your account phone number
+
+
+
+
+
+ ),
+ }}
+
+ />
+
+
+ );
+}
+
+export default ExistingCustomerStepone;
\ No newline at end of file
diff --git a/src/components/AppointmentForm/ReviewOrder/CleintInfo/ExistingCustomerSteptwo.jsx b/src/components/AppointmentForm/ReviewOrder/CleintInfo/ExistingCustomerSteptwo.jsx
new file mode 100644
index 0000000..dd6d4e3
--- /dev/null
+++ b/src/components/AppointmentForm/ReviewOrder/CleintInfo/ExistingCustomerSteptwo.jsx
@@ -0,0 +1,36 @@
+import React from 'react';
+import { Typography } from '@material-ui/core';
+//import TextField from '@mui/material/TextField';
+// import Box from '@mui/material/Box';
+// import Input from '@mui/material/Input';
+// import InputLabel from '@mui/material/InputLabel';
+//import InputAdornment from '@mui/material/InputAdornment';
+//import FormControl from '@mui/material/FormControl';
+//import TextField from '@mui/material/TextField';
+//import AccountCircle from '@mui/icons-material/AccountCircle';
+//import LocalPhoneOutlinedIcon from '@mui/icons-material/LocalPhoneOutlined';
+//import { styled } from '@mui/material/styles';
+import RadioGroup, { useRadioGroup } from '@mui/material/RadioGroup';
+import FormControlLabel, {
+ FormControlLabelProps,
+} from '@mui/material/FormControlLabel';
+import Radio from '@mui/material/Radio';
+
+ const ExistingCustomerSteptwo = () =>{
+ return (
+
+
+ Address where our team is needed
+
+
+
+ } />
+ } />
+
+
+
+
+ );
+}
+
+export default ExistingCustomerSteptwo;
\ No newline at end of file
diff --git a/src/components/AppointmentForm/ReviewOrder/CleintInfo/NewCustomerStepone.jsx b/src/components/AppointmentForm/ReviewOrder/CleintInfo/NewCustomerStepone.jsx
new file mode 100644
index 0000000..b1a79d4
--- /dev/null
+++ b/src/components/AppointmentForm/ReviewOrder/CleintInfo/NewCustomerStepone.jsx
@@ -0,0 +1,75 @@
+import React from 'react';
+import { Typography } from '@material-ui/core';
+//import TextField from '@mui/material/TextField';
+// import Box from '@mui/material/Box';
+// import Input from '@mui/material/Input';
+// import InputLabel from '@mui/material/InputLabel';
+import InputAdornment from '@mui/material/InputAdornment';
+// import FormControl from '@mui/material/FormControl';
+import TextField from '@mui/material/TextField';
+import PersonOutlineOutlinedIcon from '@mui/icons-material/PersonOutlineOutlined';
+import EmailOutlinedIcon from '@mui/icons-material/EmailOutlined';
+//import AccountCircle from '@mui/icons-material/AccountCircle';
+import LocalPhoneOutlinedIcon from '@mui/icons-material/LocalPhoneOutlined';
+
+ const NewCustomerStepone = () =>{
+ return (
+
+
+ New customer
+
+
+
+
+ Please enter your account phone number
+
+
+
+
+
+ ),
+ }}
+ />
+
+
+
+ ),
+ }}
+ />
+
+
+
+ ),
+ }}
+ />
+
+
+ );
+}
+
+export default NewCustomerStepone;
\ No newline at end of file
diff --git a/src/components/AppointmentForm/ReviewOrder/CleintInfo/NewCustomerSteptwo.jsx b/src/components/AppointmentForm/ReviewOrder/CleintInfo/NewCustomerSteptwo.jsx
new file mode 100644
index 0000000..6959980
--- /dev/null
+++ b/src/components/AppointmentForm/ReviewOrder/CleintInfo/NewCustomerSteptwo.jsx
@@ -0,0 +1,139 @@
+import React from 'react';
+import { Typography } from '@material-ui/core';
+//import TextField from '@mui/material/TextField';
+// import Box from '@mui/material/Box';
+// import Input from '@mui/material/Input';
+import InputLabel from '@mui/material/InputLabel';
+// import InputAdornment from '@mui/material/InputAdornment';
+//import FormControl from '@mui/material/FormControl';
+import TextField from '@mui/material/TextField';
+import MenuItem from '@mui/material/MenuItem';
+import FormControl from '@mui/material/FormControl';
+import Select, { SelectChangeEvent } from '@mui/material/Select';
+import Checkbox from '@mui/material/Checkbox';
+// import PersonOutlineOutlinedIcon from '@mui/icons-material/PersonOutlineOutlined';
+// import EmailOutlinedIcon from '@mui/icons-material/EmailOutlined';
+// //import AccountCircle from '@mui/icons-material/AccountCircle';
+// import LocalPhoneOutlinedIcon from '@mui/icons-material/LocalPhoneOutlined';
+
+ const NewCustomerSteptwo = () =>{
+
+ const [state, setState] = React.useState('');
+
+ const handleChange = (event) => {
+ setState(event.target.value);
+ };
+ return (
+
+
+ Address where our team is needed
+
+
+
+
+ Please enter your details below
+
+
+
+
+
+
+
+
+ state
+
+ None
+ Alabama
+ Alaska
+ Arizona
+ Arkansas
+ California
+ Colorado
+ Connecticut
+ Delaware
+ District Of Columbia
+ Florida
+ Georgia
+ Hawaii
+ Idaho
+ Illinois
+ Indiana
+ Iowa
+ Kansas
+ Kentucky
+ Louisiana
+ Maine
+ Maryland
+ Massachusetts
+ Michigan
+ Minnesota
+ Mississippi
+ Missouri
+ Montana
+ Nebraska
+ Nevada
+ New Hampshire
+ New Jersey
+ New Mexico
+ New York
+ North Carolina
+ North Dakota
+ Ohio
+ Oklahoma
+ Oregon
+ Pennsylvania
+ Rhode Island
+ South Carolina
+ South Dakota
+ Tennessee
+ Texas
+ Utah
+ Vermont
+ Virginia
+ Washington
+ West Virginia
+ Wisconsin
+ Wyoming
+
+
+
+
+
+
+
+
+
+
+ I own this residence
+
+
+
+
+
+
+ );
+}
+
+export default NewCustomerSteptwo;
\ No newline at end of file
diff --git a/src/components/AppointmentForm/ReviewOrder/LastStep.jsx b/src/components/AppointmentForm/ReviewOrder/LastStep.jsx
new file mode 100644
index 0000000..eafce54
--- /dev/null
+++ b/src/components/AppointmentForm/ReviewOrder/LastStep.jsx
@@ -0,0 +1,118 @@
+import React from 'react';
+import { Grid,Typography } from '@material-ui/core';
+import TodayIcon from '@mui/icons-material/Today';
+import AccessTimeIcon from '@mui/icons-material/AccessTime';
+import PlaceIcon from '@mui/icons-material/Place';
+import LocalPhoneOutlinedIcon from '@mui/icons-material/LocalPhoneOutlined';
+//import FormGroup from '@mui/material/FormGroup';
+//import FormControlLabel from '@mui/material/FormControlLabel';
+import Checkbox from '@mui/material/Checkbox';
+//import LinkIcon from '@mui/icons-material/Link';
+
+
+export default function LastStep() {
+
+ return (
+
+
+ Please review and confirm appointment
+
+
+
+
+
+
+ March 30, 2023
+
+
+
+
+
+
11:30 AM - 2:30 PM EST
+
+
+
+
+
+
March 30, 202365 Westington St. Suit 5C, Brooklyn,
+New York, NY 11249
+
+
+
+
+
+ 492-990-2789
+
+
+
+
+
+
+
+I accept the terms and conditions
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum, diam vel fermentum posuere, enim massa.
+
+{/*
+
+
+
+
+ revolve
+
+ */}
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/CheckoutPage/ReviewOrder/PaymentDetails.jsx b/src/components/AppointmentForm/ReviewOrder/PaymentDetails.jsx
similarity index 100%
rename from src/components/CheckoutPage/ReviewOrder/PaymentDetails.jsx
rename to src/components/AppointmentForm/ReviewOrder/PaymentDetails.jsx
diff --git a/src/components/CheckoutPage/ReviewOrder/ProductDetails.jsx b/src/components/AppointmentForm/ReviewOrder/ProductDetails.jsx
similarity index 100%
rename from src/components/CheckoutPage/ReviewOrder/ProductDetails.jsx
rename to src/components/AppointmentForm/ReviewOrder/ProductDetails.jsx
diff --git a/src/components/AppointmentForm/ReviewOrder/ResponsiveDatePickers.jsx b/src/components/AppointmentForm/ReviewOrder/ResponsiveDatePickers.jsx
new file mode 100644
index 0000000..56666ba
--- /dev/null
+++ b/src/components/AppointmentForm/ReviewOrder/ResponsiveDatePickers.jsx
@@ -0,0 +1,50 @@
+import React, { useState } from 'react';
+import Calendar from 'react-calendar';
+import { Typography } from '@material-ui/core';
+import 'react-calendar/dist/Calendar.css';
+import Radio from '@mui/material/Radio';
+import RadioGroup from '@mui/material/RadioGroup';
+import FormControlLabel from '@mui/material/FormControlLabel';
+//import { height } from '@mui/system';
+// import FormControl from '@mui/material/FormControl';
+// import FormLabel from '@mui/material/FormLabel';
+
+function ResponsiveDatePickers() {
+ const [value, onChange] = useState(new Date());
+
+ return (
+
+
+
+
+
+ } label="11:30 AM - 2:30 PM EST" />
+ } label="4:00 PM - 5:30 PM EST" />
+
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum, diam vel fermentum posuere, enim massa.
+
+
+
+
+
+ );
+}
+export default ResponsiveDatePickers;
\ No newline at end of file
diff --git a/src/components/AppointmentForm/ReviewOrder/ReviewOrder.jsx b/src/components/AppointmentForm/ReviewOrder/ReviewOrder.jsx
new file mode 100644
index 0000000..009b177
--- /dev/null
+++ b/src/components/AppointmentForm/ReviewOrder/ReviewOrder.jsx
@@ -0,0 +1,34 @@
+import React from 'react';
+//import { useFormikContext } from 'formik';
+import { Typography} from '@material-ui/core';
+import Button from '@material-ui/core/Button';
+// import ProductDetails from './ProductDetails';
+// import ShippingDetails from './ShippingDetails';
+// import PaymentDetails from './PaymentDetails';
+
+export default function ReviewOrder() {
+ //const { values: formValues } = useFormikContext();
+ return (
+
+
+
+ FIX
+
+
+ {/* */}
+
+
+ I am an existing customer
+
+ I am a new customer
+
+
+ );
+}
diff --git a/src/components/CheckoutPage/ReviewOrder/ShippingDetails.jsx b/src/components/AppointmentForm/ReviewOrder/ShippingDetails.jsx
similarity index 100%
rename from src/components/CheckoutPage/ReviewOrder/ShippingDetails.jsx
rename to src/components/AppointmentForm/ReviewOrder/ShippingDetails.jsx
diff --git a/src/components/CheckoutPage/ReviewOrder/index.js b/src/components/AppointmentForm/ReviewOrder/index.js
similarity index 100%
rename from src/components/CheckoutPage/ReviewOrder/index.js
rename to src/components/AppointmentForm/ReviewOrder/index.js
diff --git a/src/components/CheckoutPage/ReviewOrder/styles.js b/src/components/AppointmentForm/ReviewOrder/styles.js
similarity index 100%
rename from src/components/CheckoutPage/ReviewOrder/styles.js
rename to src/components/AppointmentForm/ReviewOrder/styles.js
diff --git a/src/components/AppointmentForm/Thanks/index.js b/src/components/AppointmentForm/Thanks/index.js
new file mode 100644
index 0000000..665d584
--- /dev/null
+++ b/src/components/AppointmentForm/Thanks/index.js
@@ -0,0 +1,35 @@
+import React from "react";
+import { Typography } from "@material-ui/core";
+import Button from "@mui/material/Button";
+import ThumbUpIcon from "@mui/icons-material/ThumbUp";
+function Thanks() {
+ return (
+
+
+
+ Thank you, appointment created
+
+
+
+ }>
+ Ok, great
+
+
+
+
+ );
+}
+
+export default Thanks;
diff --git a/src/components/AppointmentForm/index.js b/src/components/AppointmentForm/index.js
new file mode 100644
index 0000000..24e3a03
--- /dev/null
+++ b/src/components/AppointmentForm/index.js
@@ -0,0 +1,266 @@
+import React, { useState, useEffect } from "react";
+import "./style.css";
+import {
+ Stepper,
+ Step,
+ StepLabel,
+ Box,
+ Typography,
+ Button,
+} from "@material-ui/core";
+import { Formik, Form } from "formik";
+import ButtonAppBar from "./ButtonAppBar";
+import Problem from "./Problem";
+import Description from "./Description";
+import Client from "./Client";
+import Appointment from "./Appointment";
+import Confirm from "./Confirm";
+import Thanks from "./Thanks";
+//import validationSchema from "./FormModel/validationSchema";
+import AppointmentFormModel from "./FormModel/appointmentFormModel";
+import formInitialValues from "./FormModel/formInitialValues";
+import { steps, problemSteps, descriptionSteps, clientSteps } from "./steps";
+import useStyles from "./styles";
+
+const { formId } = AppointmentFormModel;
+
+export default function AppointmentForm() {
+ const classes = useStyles();
+ const {
+ problemIntialValues,
+ descriptionIntialValues,
+ clientIntialValues,
+ } = formInitialValues;
+
+ const [isNextdisabled, setIsNextdisabled] = useState(true);
+ const [nextHide, setNextHide] = useState(false);
+ const [problemFormField, setProblemFormField] = useState(problemIntialValues);
+ const [descriptionFormField, setDescriptionFormField] = useState(
+ descriptionIntialValues
+ );
+ const [clientFormField, setClientFormField] = useState(clientIntialValues);
+ // set default step for each
+ const [activeStep, setActiveStep] = useState(0);
+ const [problemActiveStep, setProblemActiveStep] = useState(0);
+ const [descriptionActiveStep, setDescriptionActiveStep] = useState(0);
+ const [clientActiveStep, setClientActiveStep] = useState(0);
+ //const currentValidationSchema = validationSchema[activeStep];
+ // check last step of each child
+ const isLastStep = activeStep === steps.length - 1;
+ const isProblemLastStep = problemActiveStep === problemSteps.length - 1;
+ const isDescriptionLastStep =
+ descriptionActiveStep === descriptionSteps.length - 1;
+ const isClientLastStep = clientActiveStep === clientSteps.length - 1;
+
+ useEffect(() => {
+ console.log(clientFormField, "clientFormField");
+ }, [clientFormField]);
+
+ function _handleNext() {
+ switch (activeStep) {
+ case 0:
+ return _handleProblemNext();
+ case 1:
+ return _handleDescriptionNext();
+ case 2:
+ return _handleClientNext();
+ case 3:
+ return setActiveStep(activeStep + 1);
+ case 4:
+ return setActiveStep(activeStep + 1);
+ default:
+ return;
+ }
+ }
+
+ const _handleProblemNext = () => {
+ if (isProblemLastStep) {
+ setActiveStep(activeStep + 1);
+ } else {
+ setProblemActiveStep(problemActiveStep + 1);
+ }
+ };
+
+ const _handleDescriptionNext = () => {
+ if (isDescriptionLastStep) {
+ setActiveStep(activeStep + 1);
+ } else {
+ setDescriptionActiveStep(descriptionActiveStep + 1);
+ }
+ };
+
+ const _handleClientNext = () => {
+ if (isClientLastStep) {
+ setActiveStep(activeStep + 1);
+ } else {
+ setClientActiveStep(clientActiveStep + 1);
+ }
+ };
+
+ function _handleBack() {
+ switch (activeStep) {
+ case 0:
+ return _handleProblemBack();
+ case 1:
+ return _handleDescriptionBack();
+ case 2:
+ return _handleClientBack();
+ case 3:
+ return setActiveStep(activeStep - 1);
+ case 4:
+ return setActiveStep(activeStep - 1);
+ default:
+ return;
+ }
+ }
+
+ const _handleProblemBack = () => {
+ if (problemActiveStep !== 0) {
+ setProblemActiveStep(problemActiveStep - 1);
+ }
+ };
+
+ const _handleDescriptionBack = () => {
+ if (descriptionActiveStep === 0) {
+ setActiveStep(activeStep - 1);
+ } else {
+ setDescriptionActiveStep(descriptionActiveStep - 1);
+ }
+ };
+
+ const _handleClientBack = () => {
+ if (clientActiveStep === 0) {
+ setActiveStep(activeStep - 1);
+ } else {
+ setClientActiveStep(clientActiveStep - 1);
+ }
+ };
+
+ function _renderStepContent(step) {
+ switch (step) {
+ case 0:
+ return (
+
+ );
+ case 1:
+ return (
+
+ );
+ case 2:
+ return (
+
+ );
+ case 3:
+ return ;
+ case 4:
+ return ;
+ default:
+ return ;
+ }
+ }
+
+ function _sleep(ms) {
+ return new Promise((resolve) => setTimeout(resolve, ms));
+ }
+
+ async function _submitForm(values, actions) {
+ await _sleep(1000);
+ // alert(JSON.stringify(values, null, 2));
+ actions.setSubmitting(false);
+
+ _handleNext();
+ }
+
+ function _handleSubmit(values, actions) {
+ if (isLastStep) {
+ _submitForm(values, actions);
+ } else {
+ _handleNext();
+ actions.setTouched({});
+ actions.setSubmitting(false);
+ }
+ }
+
+ return (
+
+
+
+ CREATE APPOINTMENT
+
+
+ ×
+
+
+
+ {steps.map((label) => (
+
+ {label}
+
+ ))}
+
+
+
+ {({ isSubmitting }) => (
+
+ )}
+
+
+
+ );
+}
diff --git a/src/components/AppointmentForm/steps.js b/src/components/AppointmentForm/steps.js
new file mode 100644
index 0000000..e0966c2
--- /dev/null
+++ b/src/components/AppointmentForm/steps.js
@@ -0,0 +1,19 @@
+export const steps = [
+ "PROBLEM",
+ "DESCRIPTION",
+ "CLEINT INFO",
+ "APPOINTMENT",
+ "CONFIRM",
+];
+export const problemSteps = ["Service Select", "Service Type", "Issues Step"];
+export const descriptionSteps = [
+ "System Age",
+ "Diagnostic Fee",
+ "Additional Info",
+];
+
+export const clientSteps = [
+ "Customer Type",
+ "Customer Info",
+ "Customer Address",
+];
diff --git a/src/components/AppointmentForm/style.css b/src/components/AppointmentForm/style.css
new file mode 100644
index 0000000..4e22948
--- /dev/null
+++ b/src/components/AppointmentForm/style.css
@@ -0,0 +1,379 @@
+@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;900&display=swap");
+
+.makeStyles-paper-2 {
+ padding: 0px !important;
+ margin-top: 0px !important;
+ margin-bottom: 0px !important;
+}
+.MuiPaper-root {
+ background-color: #fff !important;
+}
+/* .MuiTypography-body1 {
+font-family: 'Poppins'!important;
+font-style: normal!important;
+font-weight: 600!important;
+font-size: 12px!important;
+line-height: 16px!important;
+letter-spacing: 0.1em;
+text-transform: uppercase;
+ background-color: #fff;
+padding: 13px;
+color: black;
+
+position: relative;
+} */
+.makeStyles-root-1 {
+ width: 560px !important;
+ margin-left: auto;
+ margin-right: 0px !important;
+}
+.MuiStepLabel-root {
+ flex-direction: column !important;
+ gap: 9px;
+}
+.makeStyles-stepper-31 {
+ padding: 24px 24px 40px !important;
+ color: black !important;
+ background: #f5f8fb !important;
+ border-bottom: 1px solid #dde1eb !important;
+}
+
+.MuiCardContent-root {
+ font-size: 16px;
+ font-family: "Poppins";
+ color: black;
+ text-align: center;
+ padding-top: 50px !important;
+}
+.MuiStepLabel-label.MuiStepLabel-active {
+ font-family: "Poppins";
+ font-style: normal;
+ font-weight: 400;
+ font-size: 11px;
+ line-height: 16px;
+ /* identical to box height, or 145% */
+
+ text-align: center;
+ letter-spacing: 0.04em;
+ text-transform: uppercase;
+
+ /* Primary */
+
+ color: #007bff !important;
+}
+.MuiStepLabel-label {
+ font-family: "Poppins" !important;
+ font-style: normal !important;
+ font-weight: 400 !important;
+ font-size: 11px !important;
+ line-height: 16px !important;
+ /* identical to box height, or 145% */
+
+ text-align: center;
+ letter-spacing: 0.04em !important;
+ text-transform: uppercase !important;
+
+ /* Headings LIGHT */
+
+ color: #1f2327 !important;
+}
+.MuiStepIcon-root.MuiStepIcon-active {
+ color: white !important;
+ /* border: 1px solid #00bcd4; */
+ border: 1px solid #007bff;
+ border-radius: 50%;
+ /* border: #00bcd4; */
+}
+.MuiStepIcon-text {
+ fill: #00bcd4 !important;
+}
+
+#checkoutForm {
+ background: white;
+ color: black;
+ position: relative;
+}
+.MuiTypography-h6 {
+ padding: 40px 15px 20px 25px;
+ font-family: "Poppins" !important;
+ font-style: normal !important;
+ font-weight: 600 !important;
+ font-size: 20px !important;
+ line-height: 28px !important;
+ color: #1f2327 !important;
+}
+
+.cardname {
+ display: grid;
+ grid-template-columns: auto auto;
+ width: 100%;
+ justify-content: center;
+ gap: 21px;
+}
+.MuiCard-root {
+ overflow: hidden;
+ border-radius: 16px !important;
+ width: 244px;
+ height: 116px;
+ background-color: #fff !important;
+}
+
+.MuiButton-root {
+ color: black;
+}
+.MuiPaper-elevation1 {
+ border: 1px solid #d3d7e1;
+ box-shadow: none !important;
+}
+.MuiCardActions-root {
+ justify-content: center !important;
+}
+.MuiButton-label {
+ font-family: "Poppins" !important;
+ font-style: normal !important;
+ font-weight: 500 !important;
+ font-size: 16px !important;
+ line-height: 20px !important;
+ letter-spacing: 0px !important;
+ text-transform: none !important;
+ text-align: center;
+}
+.MuiPaper-rounded {
+ border-radius: none !important;
+}
+.makeStyles-buttons-32 {
+ margin-top: 100px !important;
+}
+.MuiStepConnector-lineHorizontal {
+ border-top: 1px dashed #4ca2ff !important;
+}
+.MuiStepConnector-root {
+ margin-top: -23px !important;
+}
+
+.MuiSvgIcon-root {
+ font-size: 2rem !important;
+}
+
+.MuiStep-horizontal {
+ padding-left: 0px !important;
+ padding-right: 0px !important;
+}
+.makeStyles-stepper-3 {
+ padding: 13px 32px 13px !important;
+ background: #f5f8fb !important;
+}
+.makeStyles-buttons-4 {
+ margin-top: 140px;
+}
+.two-btn {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ align-items: center;
+}
+.exist {
+ background: #007bff;
+ padding: 12px 18px !important;
+ gap: 6px;
+ width: 267px;
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.15);
+ border-radius: 500px !important;
+ color: white !important;
+}
+.new {
+ padding: 12px 18px !important;
+ width: 221px;
+ background: #edf1f7;
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.09);
+ border-radius: 500px !important;
+}
+.rectangle {
+ padding-top: 65px;
+ padding-bottom: 40px;
+}
+.MuiTypography-h5 {
+ width: 100px !important;
+ display: block !important;
+ font-family: "Poppins" !important;
+ font-style: normal !important;
+ font-weight: 900 !important;
+ border-radius: 24px 0px !important;
+ font-size: 32px !important;
+ line-height: 32px !important;
+ margin-left: auto !important;
+ padding-top: 33px !important;
+ margin-right: auto !important;
+ text-align: center !important;
+ border-bottom: 10px solid #4ca2ff;
+ border-right: 10px solid #4ca2ff;
+ height: 100px;
+ color: white;
+ background: #007bff;
+}
+.MuiStepIcon-root.MuiStepIcon-completed {
+ color: #007bff !important;
+}
+
+/* payment form */
+
+.css-3hx9vb-JoyRadioGroup-root {
+ display: grid !important;
+ grid-template-columns: auto auto auto;
+ gap: 10px !important;
+ width: 90% !important;
+ margin-left: auto !important;
+ margin-right: auto !important;
+}
+.css-ycie4v-JoySheet-root {
+ padding: 8px !important;
+ text-align: center !important;
+}
+.css-1fjq3ub-JoyRadio-root {
+ font-family: "Poppins" !important;
+}
+
+.css-1su2bbo-JoyRadio-label {
+ font-style: normal !important;
+ font-weight: 400 !important;
+ font-size: 16px !important;
+ color: #1f2327 !important;
+}
+
+.css-1wzowpn-JoyRadio-action {
+ border-color: #d3d7e1 !important;
+}
+
+/*----*/
+
+.css-1ahv6t2-JoyList-root {
+ display: grid !important;
+ grid-template-columns: auto auto !important;
+ width: 95%;
+ align-items: normal !important;
+ margin-left: auto auto !important;
+ gap: 10px;
+}
+
+.css-b5w08v-JoySheet-root {
+ border-radius: 18px;
+}
+.css-1obzj18-JoySheet-root {
+ text-align: center;
+ box-shadow: none !important;
+ padding-top: 75px;
+ max-width: 244px !important;
+}
+
+.css-pfaso8-JoyRadio-label {
+ font-size: 15px;
+ font-family: "Poppins";
+ color: #1f2327;
+ line-height: 20px;
+ font-weight: 500;
+}
+
+/* calender */
+
+.react-calendar {
+ width: 560px !important;
+ height: 376px !important;
+ border: none !important;
+}
+.react-calendar button {
+ padding: 16px 0px !important;
+ font-family: "Poppins";
+ font-style: normal;
+ font-weight: 500;
+ font-size: 16px;
+ line-height: 16px;
+}
+
+abbr[title] {
+ text-decoration: none !important;
+ font-family: "Poppins";
+ font-style: normal;
+ font-weight: 500;
+ font-size: 12px;
+ line-height: 12px;
+}
+
+.react-calendar__month-view__weekdays {
+ text-transform: capitalize !important;
+}
+.react-calendar__navigation__arrow {
+ display: none;
+}
+
+.react-calendar__navigation {
+ height: 70px !important;
+}
+
+.react-calendar__navigation button {
+ margin-left: 27px !important;
+ flex-grow: 0 !important;
+}
+
+.react-calendar__navigation__label__labelText {
+ font-family: "Poppins";
+ font-style: normal;
+ font-weight: 300;
+ font-size: 32px;
+ line-height: 40px;
+ color: #1f2327;
+}
+.react-calendar__navigation button:hover {
+ background-color: white !important;
+}
+
+.css-j204z7-MuiFormControlLabel-root {
+ margin-left: 0px !important;
+}
+
+/* .css-dmmspl-MuiFormGroup-root{
+ display: flex!important;
+ flex-direction: row!important;
+ padding-top: 16px;
+ padding-left: 20px;
+} */
+
+/*---SUCCESS---*/
+.MuiTypography-h4 {
+ padding-top: 30px;
+ text-align: center;
+ font-family: "Poppins" !important;
+ font-style: normal !important;
+ font-weight: 600 !important;
+ font-size: 20px !important;
+ line-height: 28px !important;
+ color: #1f2327;
+}
+
+.css-1rwt2y5-MuiButtonBase-root-MuiButton-root {
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.09);
+ border-radius: 500px !important;
+ padding: 12px 24px !important;
+ background-color: white !important;
+ border: none !important;
+}
+
+.Okay {
+ color: black;
+ text-transform: none;
+ font-family: Poppins;
+ font-style: normal;
+ font-weight: 600;
+ font-size: 18px;
+ line-height: 24px;
+}
+
+.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input {
+ font-family: "Poppins";
+ font-style: normal;
+ font-weight: 400;
+ font-size: 16px;
+ color: #1f2327;
+}
+.css-1d3z3hw-MuiOutlinedInput-notchedOutline {
+ border-radius: 10px !important;
+}
diff --git a/src/components/CheckoutPage/styles.js b/src/components/AppointmentForm/styles.js
similarity index 100%
rename from src/components/CheckoutPage/styles.js
rename to src/components/AppointmentForm/styles.js
diff --git a/src/components/CheckoutPage/CheckoutPage.jsx b/src/components/CheckoutPage/CheckoutPage.jsx
deleted file mode 100644
index c1d5df5..0000000
--- a/src/components/CheckoutPage/CheckoutPage.jsx
+++ /dev/null
@@ -1,127 +0,0 @@
-import React, { useState } from 'react';
-import {
- Stepper,
- Step,
- StepLabel,
- Button,
- Typography,
- CircularProgress
-} from '@material-ui/core';
-import { Formik, Form } from 'formik';
-
-import AddressForm from './Forms/AddressForm';
-import PaymentForm from './Forms/PaymentForm';
-import ReviewOrder from './ReviewOrder';
-import CheckoutSuccess from './CheckoutSuccess';
-
-import validationSchema from './FormModel/validationSchema';
-import checkoutFormModel from './FormModel/checkoutFormModel';
-import formInitialValues from './FormModel/formInitialValues';
-
-import useStyles from './styles';
-
-const steps = ['Shipping address', 'Payment details', 'Review your order'];
-const { formId, formField } = checkoutFormModel;
-
-function _renderStepContent(step) {
- switch (step) {
- case 0:
- return ;
- case 1:
- return ;
- case 2:
- return ;
- default:
- return Not Found
;
- }
-}
-
-export default function CheckoutPage() {
- const classes = useStyles();
- const [activeStep, setActiveStep] = useState(0);
- const currentValidationSchema = validationSchema[activeStep];
- const isLastStep = activeStep === steps.length - 1;
-
- function _sleep(ms) {
- return new Promise(resolve => setTimeout(resolve, ms));
- }
-
- async function _submitForm(values, actions) {
- await _sleep(1000);
- alert(JSON.stringify(values, null, 2));
- actions.setSubmitting(false);
-
- setActiveStep(activeStep + 1);
- }
-
- function _handleSubmit(values, actions) {
- if (isLastStep) {
- _submitForm(values, actions);
- } else {
- setActiveStep(activeStep + 1);
- actions.setTouched({});
- actions.setSubmitting(false);
- }
- }
-
- function _handleBack() {
- setActiveStep(activeStep - 1);
- }
-
- return (
-
-
- Checkout
-
-
- {steps.map(label => (
-
- {label}
-
- ))}
-
-
- {activeStep === steps.length ? (
-
- ) : (
-
- {({ isSubmitting }) => (
-
- )}
-
- )}
-
-
- );
-}
diff --git a/src/components/CheckoutPage/CheckoutSuccess/CheckoutSuccess.jsx b/src/components/CheckoutPage/CheckoutSuccess/CheckoutSuccess.jsx
deleted file mode 100644
index b7f503a..0000000
--- a/src/components/CheckoutPage/CheckoutSuccess/CheckoutSuccess.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React from 'react';
-import { Typography } from '@material-ui/core';
-
-function CheckoutSuccess() {
- return (
-
-
- Thank you for your order.
-
-
- Your order number is #2001539. We have emailed your order confirmation,
- and will send you an update when your order has shipped.
-
-
- );
-}
-
-export default CheckoutSuccess;
diff --git a/src/components/CheckoutPage/CheckoutSuccess/index.js b/src/components/CheckoutPage/CheckoutSuccess/index.js
deleted file mode 100644
index 32bd128..0000000
--- a/src/components/CheckoutPage/CheckoutSuccess/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import CheckoutSuccess from './CheckoutSuccess';
-export default CheckoutSuccess;
diff --git a/src/components/CheckoutPage/FormModel/checkoutFormModel.js b/src/components/CheckoutPage/FormModel/checkoutFormModel.js
deleted file mode 100644
index 5d1be8c..0000000
--- a/src/components/CheckoutPage/FormModel/checkoutFormModel.js
+++ /dev/null
@@ -1,71 +0,0 @@
-export default {
- formId: 'checkoutForm',
- formField: {
- firstName: {
- name: 'firstName',
- label: 'First name*',
- requiredErrorMsg: 'First name is required'
- },
- lastName: {
- name: 'lastName',
- label: 'Last name*',
- requiredErrorMsg: 'Last name is required'
- },
- address1: {
- name: 'address1',
- label: 'Address Line 1*',
- requiredErrorMsg: 'Address Line 1 is required'
- },
- address2: {
- name: 'address2',
- label: 'Address Line 2'
- },
- city: {
- name: 'city',
- label: 'City*',
- requiredErrorMsg: 'City is required'
- },
- state: {
- name: 'state',
- label: 'State/Province/Region'
- },
- zipcode: {
- name: 'zipcode',
- label: 'Zipcode*',
- requiredErrorMsg: 'Zipcode is required',
- invalidErrorMsg: 'Zipcode is not valid (e.g. 70000)'
- },
- country: {
- name: 'country',
- label: 'Country*',
- requiredErrorMsg: 'Country is required'
- },
- useAddressForPaymentDetails: {
- name: 'useAddressForPaymentDetails',
- label: 'Use this address for payment details'
- },
- nameOnCard: {
- name: 'nameOnCard',
- label: 'Name on card*',
- requiredErrorMsg: 'Name on card is required'
- },
- cardNumber: {
- name: 'cardNumber',
- label: 'Card number*',
- requiredErrorMsg: 'Card number is required',
- invalidErrorMsg: 'Card number is not valid (e.g. 4111111111111)'
- },
- expiryDate: {
- name: 'expiryDate',
- label: 'Expiry date*',
- requiredErrorMsg: 'Expiry date is required',
- invalidErrorMsg: 'Expiry date is not valid'
- },
- cvv: {
- name: 'cvv',
- label: 'CVV*',
- requiredErrorMsg: 'CVV is required',
- invalidErrorMsg: 'CVV is invalid (e.g. 357)'
- }
- }
-};
diff --git a/src/components/CheckoutPage/FormModel/formInitialValues.js b/src/components/CheckoutPage/FormModel/formInitialValues.js
deleted file mode 100644
index 8c006cf..0000000
--- a/src/components/CheckoutPage/FormModel/formInitialValues.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import checkoutFormModel from './checkoutFormModel';
-const {
- formField: {
- firstName,
- lastName,
- address1,
- city,
- zipcode,
- country,
- useAddressForPaymentDetails,
- nameOnCard,
- cardNumber,
- expiryDate,
- cvv
- }
-} = checkoutFormModel;
-
-export default {
- [firstName.name]: '',
- [lastName.name]: '',
- [address1.name]: '',
- [city.name]: '',
- [zipcode.name]: '',
- [country.name]: '',
- [useAddressForPaymentDetails.name]: false,
- [nameOnCard.name]: '',
- [cardNumber.name]: '',
- [expiryDate.name]: '',
- [cvv.name]: ''
-};
diff --git a/src/components/CheckoutPage/Forms/AddressForm.jsx b/src/components/CheckoutPage/Forms/AddressForm.jsx
deleted file mode 100644
index c48b847..0000000
--- a/src/components/CheckoutPage/Forms/AddressForm.jsx
+++ /dev/null
@@ -1,130 +0,0 @@
-import React from 'react';
-import { Grid, Typography } from '@material-ui/core';
-import { InputField, CheckboxField, SelectField } from '../../FormFields';
-
-const cities = [
- {
- value: undefined,
- label: 'None'
- },
- {
- value: '1',
- label: 'New York'
- },
- {
- value: '2',
- label: 'Chicago'
- },
- {
- value: '3',
- label: 'Saigon'
- }
-];
-
-const states = [
- {
- value: undefined,
- label: 'None'
- },
- {
- value: '11',
- label: 'Florida'
- },
- {
- value: '22',
- label: 'Michigan'
- },
- {
- value: '33',
- label: 'Texas'
- }
-];
-
-const countries = [
- {
- value: null,
- label: 'None'
- },
- {
- value: '111',
- label: 'United States'
- },
- {
- value: '222',
- label: 'Italy'
- },
- {
- value: '333',
- label: 'Vietnam'
- }
-];
-
-export default function AddressForm(props) {
- const {
- formField: {
- firstName,
- lastName,
- address1,
- address2,
- city,
- state,
- zipcode,
- country,
- useAddressForPaymentDetails
- }
- } = props;
- return (
-
-
- Shipping address
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/CheckoutPage/Forms/PaymentForm.jsx b/src/components/CheckoutPage/Forms/PaymentForm.jsx
deleted file mode 100644
index 387dba8..0000000
--- a/src/components/CheckoutPage/Forms/PaymentForm.jsx
+++ /dev/null
@@ -1,47 +0,0 @@
-import React from 'react';
-import { Grid, Typography } from '@material-ui/core';
-import { InputField, DatePickerField } from '../../FormFields';
-
-export default function PaymentForm(props) {
- const {
- formField: { nameOnCard, cardNumber, expiryDate, cvv }
- } = props;
-
- return (
-
-
- Payment method
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/CheckoutPage/ReviewOrder/ReviewOrder.jsx b/src/components/CheckoutPage/ReviewOrder/ReviewOrder.jsx
deleted file mode 100644
index 8308294..0000000
--- a/src/components/CheckoutPage/ReviewOrder/ReviewOrder.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react';
-import { useFormikContext } from 'formik';
-import { Typography, Grid } from '@material-ui/core';
-import ProductDetails from './ProductDetails';
-import ShippingDetails from './ShippingDetails';
-import PaymentDetails from './PaymentDetails';
-
-export default function ReviewOrder() {
- const { values: formValues } = useFormikContext();
- return (
-
-
- Order summary
-
-
-
-
-
-
-
- );
-}
diff --git a/src/components/CheckoutPage/index.js b/src/components/CheckoutPage/index.js
deleted file mode 100644
index 8728a02..0000000
--- a/src/components/CheckoutPage/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import CheckoutPage from './CheckoutPage';
-export default CheckoutPage;
diff --git a/src/components/Layout/MaterialLayout.jsx b/src/components/Layout/MaterialLayout.jsx
index ffa0477..53111b0 100644
--- a/src/components/Layout/MaterialLayout.jsx
+++ b/src/components/Layout/MaterialLayout.jsx
@@ -1,11 +1,11 @@
-import React from 'react';
-import { Paper, CssBaseline } from '@material-ui/core';
-import { ThemeProvider } from '@material-ui/core/styles';
+import React from "react";
+import { Paper, CssBaseline } from "@material-ui/core";
+import { ThemeProvider } from "@material-ui/core/styles";
-import Header from '../Header';
-import Footer from '../Footer';
+// import Header from '../Header';
+// import Footer from '../Footer';
-import { theme, useStyle } from './styles';
+import { theme, useStyle } from "./styles";
export default function MaterialLayout(props) {
const { children } = props;
@@ -14,11 +14,11 @@ export default function MaterialLayout(props) {
return (
-
+ {/* */}
-
+ {/* */}
);
}
diff --git a/src/components/Layout/styles.js b/src/components/Layout/styles.js
index be3f502..736ab38 100644
--- a/src/components/Layout/styles.js
+++ b/src/components/Layout/styles.js
@@ -1,43 +1,45 @@
import {
createMuiTheme,
responsiveFontSizes,
- makeStyles
-} from '@material-ui/core/styles';
-import { cyan } from '@material-ui/core/colors';
+ makeStyles,
+} from "@material-ui/core/styles";
+import { cyan } from "@material-ui/core/colors";
let theme = createMuiTheme({
palette: {
- type: 'dark',
+ type: "dark",
primary: cyan,
- secondary: cyan
- }
+ secondary: cyan,
+ },
});
theme = responsiveFontSizes(theme);
const useStyle = makeStyles(() => ({
root: {
- width: 'auto',
+ height: "100vh",
+ width: "auto",
marginLeft: theme.spacing(2),
marginRight: theme.spacing(2),
[theme.breakpoints.up(600 + theme.spacing(2) * 2)]: {
width: 600,
- marginLeft: 'auto',
- marginRight: 'auto'
+ marginLeft: "auto",
+ marginRight: "auto",
},
backgroundColor: theme.palette.background.default,
- color: theme.palette.text.primary
+ color: theme.palette.text.primary,
},
paper: {
+ height: "100vh",
marginTop: theme.spacing(3),
marginBottom: theme.spacing(3),
padding: theme.spacing(2),
[theme.breakpoints.up(600 + theme.spacing(3) * 2)]: {
marginTop: theme.spacing(6),
marginBottom: theme.spacing(6),
- padding: theme.spacing(3)
- }
- }
+ padding: theme.spacing(3),
+ },
+ },
}));
export { theme, useStyle };
diff --git a/src/index.css b/src/index.css
index ec2585e..a764e32 100644
--- a/src/index.css
+++ b/src/index.css
@@ -1,13 +1,16 @@
body {
+ background-image: url("/imag.png");
+ background-color: #f5f5f5 !important; /* set your desired background color */
+ height: 100vh; /* set the height to 100% of the viewport height */
margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
+ "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+ font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace;
}
diff --git a/src/index.js b/src/index.js
index 87d1be5..c1d1f5d 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,10 +1,15 @@
-import React from 'react';
-import ReactDOM from 'react-dom';
-import './index.css';
-import App from './App';
-import * as serviceWorker from './serviceWorker';
+import React from "react";
+import { createRoot } from "react-dom/client";
+import "./index.css";
+import App from "./App";
+import * as serviceWorker from "./serviceWorker";
-ReactDOM.render( , document.getElementById('root'));
+const rootElement = document.getElementById("root");
+createRoot(rootElement).render(
+
+
+
+);
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
diff --git a/yarn.lock b/yarn.lock
index 64c93cc..71766fc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -190,6 +190,13 @@
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-module-imports@^7.16.7":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
+ integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
+ dependencies:
+ "@babel/types" "^7.18.6"
+
"@babel/helper-module-imports@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91"
@@ -293,6 +300,16 @@
dependencies:
"@babel/types" "^7.8.3"
+"@babel/helper-string-parser@^7.19.4":
+ version "7.19.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
+ integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
+
+"@babel/helper-validator-identifier@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+ integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
+
"@babel/helper-wrap-function@^7.7.4":
version "7.7.4"
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace"
@@ -923,6 +940,13 @@
dependencies:
regenerator-runtime "^0.13.2"
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
+ integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
+ dependencies:
+ regenerator-runtime "^0.13.11"
+
"@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1"
@@ -987,6 +1011,15 @@
lodash "^4.17.13"
to-fast-properties "^2.0.0"
+"@babel/types@^7.18.6":
+ version "7.21.3"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.3.tgz#4865a5357ce40f64e3400b0f3b737dc6d4f64d05"
+ integrity sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.19.4"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ to-fast-properties "^2.0.0"
+
"@babel/types@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c"
@@ -1026,11 +1059,118 @@
dependencies:
"@date-io/core" "^1.3.13"
+"@emotion/babel-plugin@^11.10.6":
+ version "11.10.6"
+ resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz#a68ee4b019d661d6f37dec4b8903255766925ead"
+ integrity sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/runtime" "^7.18.3"
+ "@emotion/hash" "^0.9.0"
+ "@emotion/memoize" "^0.8.0"
+ "@emotion/serialize" "^1.1.1"
+ babel-plugin-macros "^3.1.0"
+ convert-source-map "^1.5.0"
+ escape-string-regexp "^4.0.0"
+ find-root "^1.1.0"
+ source-map "^0.5.7"
+ stylis "4.1.3"
+
+"@emotion/cache@^11.10.5":
+ version "11.10.5"
+ resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.5.tgz#c142da9351f94e47527ed458f7bbbbe40bb13c12"
+ integrity sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==
+ dependencies:
+ "@emotion/memoize" "^0.8.0"
+ "@emotion/sheet" "^1.2.1"
+ "@emotion/utils" "^1.2.0"
+ "@emotion/weak-memoize" "^0.3.0"
+ stylis "4.1.3"
+
"@emotion/hash@^0.7.4":
version "0.7.4"
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.4.tgz#f14932887422c9056b15a8d222a9074a7dfa2831"
integrity sha512-fxfMSBMX3tlIbKUdtGKxqB1fyrH6gVrX39Gsv3y8lRYKUqlgDt3UMqQyGnR1bQMa2B8aGnhLZokZgg8vT0Le+A==
+"@emotion/hash@^0.9.0":
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7"
+ integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==
+
+"@emotion/is-prop-valid@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83"
+ integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==
+ dependencies:
+ "@emotion/memoize" "^0.8.0"
+
+"@emotion/memoize@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f"
+ integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==
+
+"@emotion/react@^11.10.6":
+ version "11.10.6"
+ resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.6.tgz#dbe5e650ab0f3b1d2e592e6ab1e006e75fd9ac11"
+ integrity sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==
+ dependencies:
+ "@babel/runtime" "^7.18.3"
+ "@emotion/babel-plugin" "^11.10.6"
+ "@emotion/cache" "^11.10.5"
+ "@emotion/serialize" "^1.1.1"
+ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0"
+ "@emotion/utils" "^1.2.0"
+ "@emotion/weak-memoize" "^0.3.0"
+ hoist-non-react-statics "^3.3.1"
+
+"@emotion/serialize@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0"
+ integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==
+ dependencies:
+ "@emotion/hash" "^0.9.0"
+ "@emotion/memoize" "^0.8.0"
+ "@emotion/unitless" "^0.8.0"
+ "@emotion/utils" "^1.2.0"
+ csstype "^3.0.2"
+
+"@emotion/sheet@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.1.tgz#0767e0305230e894897cadb6c8df2c51e61a6c2c"
+ integrity sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==
+
+"@emotion/styled@^11.10.6":
+ version "11.10.6"
+ resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.6.tgz#d886afdc51ef4d66c787ebde848f3cc8b117ebba"
+ integrity sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==
+ dependencies:
+ "@babel/runtime" "^7.18.3"
+ "@emotion/babel-plugin" "^11.10.6"
+ "@emotion/is-prop-valid" "^1.2.0"
+ "@emotion/serialize" "^1.1.1"
+ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0"
+ "@emotion/utils" "^1.2.0"
+
+"@emotion/unitless@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db"
+ integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==
+
+"@emotion/use-insertion-effect-with-fallbacks@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df"
+ integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==
+
+"@emotion/utils@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561"
+ integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==
+
+"@emotion/weak-memoize@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb"
+ integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==
+
"@hapi/address@2.x.x":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
@@ -1306,11 +1446,125 @@
call-me-maybe "^1.0.1"
glob-to-regexp "^0.3.0"
+"@mui/base@5.0.0-alpha.122":
+ version "5.0.0-alpha.122"
+ resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.122.tgz#707c33834cfb627b81c273a25d50b2bef44a1256"
+ integrity sha512-IgZEFQyHa39J1+Q3tekVdhPuUm1fr3icddaNLmiAIeYTVXmR7KR5FhBAIL0P+4shlPq0liUPGlXryoTm0iCeFg==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@emotion/is-prop-valid" "^1.2.0"
+ "@mui/types" "^7.2.3"
+ "@mui/utils" "^5.11.13"
+ "@popperjs/core" "^2.11.6"
+ clsx "^1.2.1"
+ prop-types "^15.8.1"
+ react-is "^18.2.0"
+
+"@mui/core-downloads-tracker@^5.11.14":
+ version "5.11.14"
+ resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.11.14.tgz#0ea7d3890fa50e1fc8028674f39ee8b39b7d43c0"
+ integrity sha512-rfc08z6+3Fif+Gopx2/qmk+MEQlwYeA+gOcSK048BHkTty/ol/boHuVeL2BNC/cf9OVRjJLYHtVb/DeW791LSQ==
+
+"@mui/icons-material@^5.11.11":
+ version "5.11.11"
+ resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.11.11.tgz#d4e01bd405b0dac779f5e060586277f91f3acb6e"
+ integrity sha512-Eell3ADmQVE8HOpt/LZ3zIma8JSvPh3XgnhwZLT0k5HRqZcd6F/QDHc7xsWtgz09t+UEFvOYJXjtrwKmLdwwpw==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+
+"@mui/joy@^5.0.0-alpha.72":
+ version "5.0.0-alpha.72"
+ resolved "https://registry.yarnpkg.com/@mui/joy/-/joy-5.0.0-alpha.72.tgz#870e4922e63fc441b5a618a4288b212ea2a217d2"
+ integrity sha512-Tlf5HkRUpYMuVAjLWZY/k1mqF8fGHH5l3OL4Q8SZIiYZF+k6loMrapCI2L70qDVDbb6C42G0/9qrOczJNMIF4A==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@mui/base" "5.0.0-alpha.122"
+ "@mui/core-downloads-tracker" "^5.11.14"
+ "@mui/system" "^5.11.14"
+ "@mui/types" "^7.2.3"
+ "@mui/utils" "^5.11.13"
+ clsx "^1.2.1"
+ csstype "^3.1.1"
+ prop-types "^15.8.1"
+ react-is "^18.2.0"
+
+"@mui/material@^5.11.14":
+ version "5.11.14"
+ resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.11.14.tgz#f7e3fb9262d09b801deafd41c22dc2767c198c9d"
+ integrity sha512-uoiUyybmo+M+nYARBygmbXgX6s/hH0NKD56LCAv9XvmdGVoXhEGjOvxI5/Bng6FS3NNybnA8V+rgZW1Z/9OJtA==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@mui/base" "5.0.0-alpha.122"
+ "@mui/core-downloads-tracker" "^5.11.14"
+ "@mui/system" "^5.11.14"
+ "@mui/types" "^7.2.3"
+ "@mui/utils" "^5.11.13"
+ "@types/react-transition-group" "^4.4.5"
+ clsx "^1.2.1"
+ csstype "^3.1.1"
+ prop-types "^15.8.1"
+ react-is "^18.2.0"
+ react-transition-group "^4.4.5"
+
+"@mui/private-theming@^5.11.13":
+ version "5.11.13"
+ resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.11.13.tgz#7841acc7e0d85e3aad223b1a0fad11be9349ef01"
+ integrity sha512-PJnYNKzW5LIx3R+Zsp6WZVPs6w5sEKJ7mgLNnUXuYB1zo5aX71FVLtV7geyPXRcaN2tsoRNK7h444ED0t7cIjA==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@mui/utils" "^5.11.13"
+ prop-types "^15.8.1"
+
+"@mui/styled-engine@^5.11.11":
+ version "5.11.11"
+ resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.11.11.tgz#9084c331fdcff2210ec33adf37f34e94d67202e4"
+ integrity sha512-wV0UgW4lN5FkDBXefN8eTYeuE9sjyQdg5h94vtwZCUamGQEzmCOtir4AakgmbWMy0x8OLjdEUESn9wnf5J9MOg==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@emotion/cache" "^11.10.5"
+ csstype "^3.1.1"
+ prop-types "^15.8.1"
+
+"@mui/system@^5.11.14":
+ version "5.11.14"
+ resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.11.14.tgz#7e7489e5266b56a6890043c623fa91a850a6669a"
+ integrity sha512-/MBv5dUoijJNEKEGi5tppIszGN0o2uejmeISi5vl0CLcaQsI1cd+uBgK+JYUP1VWvI/MtkWRLVSWtF2FWhu5Nw==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@mui/private-theming" "^5.11.13"
+ "@mui/styled-engine" "^5.11.11"
+ "@mui/types" "^7.2.3"
+ "@mui/utils" "^5.11.13"
+ clsx "^1.2.1"
+ csstype "^3.1.1"
+ prop-types "^15.8.1"
+
+"@mui/types@^7.2.3":
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.3.tgz#06faae1c0e2f3a31c86af6f28b3a4a42143670b9"
+ integrity sha512-tZ+CQggbe9Ol7e/Fs5RcKwg/woU+o8DCtOnccX6KmbBc7YrfqMYEYuaIcXHuhpT880QwNkZZ3wQwvtlDFA2yOw==
+
+"@mui/utils@^5.11.13":
+ version "5.11.13"
+ resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.11.13.tgz#8d7317f221e8973200764820fa7f2a622dbc7150"
+ integrity sha512-5ltA58MM9euOuUcnvwFJqpLdEugc9XFsRR8Gt4zZNb31XzMfSKJPR4eumulyhsOTK1rWf7K4D63NKFPfX0AxqA==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@types/prop-types" "^15.7.5"
+ "@types/react-is" "^16.7.1 || ^17.0.0"
+ prop-types "^15.8.1"
+ react-is "^18.2.0"
+
"@nodelib/fs.stat@^1.1.2":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+"@popperjs/core@^2.11.6":
+ version "2.11.7"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.7.tgz#ccab5c8f7dc557a52ca3288c10075c9ccd37fff7"
+ integrity sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==
+
"@sheerun/mutationobserver-shim@^0.3.2":
version "0.3.2"
resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz#8013f2af54a2b7d735f71560ff360d3a8176a87b"
@@ -1551,6 +1805,18 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636"
integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==
+"@types/lodash.memoize@^4.1.7":
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/lodash.memoize/-/lodash.memoize-4.1.7.tgz#aff94ab32813c557cbc1104e127030e3d60a3b27"
+ integrity sha512-lGN7WeO4vO6sICVpf041Q7BX/9k1Y24Zo3FY0aUezr1QlKznpjzsDk3T3wvH8ofYzoK0QupN9TWcFAFZlyPwQQ==
+ dependencies:
+ "@types/lodash" "*"
+
+"@types/lodash@*":
+ version "4.14.192"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.192.tgz#5790406361a2852d332d41635d927f1600811285"
+ integrity sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==
+
"@types/minimatch@*":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
@@ -1571,6 +1837,11 @@
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
+"@types/prop-types@^15.7.5":
+ version "15.7.5"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
+ integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
+
"@types/q@^1.5.1":
version "1.5.2"
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
@@ -1583,6 +1854,13 @@
dependencies:
"@types/react" "*"
+"@types/react-is@^16.7.1 || ^17.0.0":
+ version "17.0.3"
+ resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a"
+ integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==
+ dependencies:
+ "@types/react" "*"
+
"@types/react-transition-group@^4.2.0":
version "4.2.3"
resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.2.3.tgz#4924133f7268694058e415bf7aea2d4c21131470"
@@ -1590,6 +1868,13 @@
dependencies:
"@types/react" "*"
+"@types/react-transition-group@^4.4.5":
+ version "4.4.5"
+ resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416"
+ integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==
+ dependencies:
+ "@types/react" "*"
+
"@types/react@*":
version "16.9.17"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.17.tgz#58f0cc0e9ec2425d1441dd7b623421a867aa253e"
@@ -1840,6 +2125,11 @@
"@webassemblyjs/wast-parser" "1.8.5"
"@xtuc/long" "4.2.2"
+"@wojtekmaj/date-utils@^1.1.3":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@wojtekmaj/date-utils/-/date-utils-1.1.3.tgz#7be7fb33a2b987d886ff868877ee8c7908176e85"
+ integrity sha512-rHrDuTl1cx5LYo8F4K4HVauVjwzx4LwrKfEk4br4fj4nK8JjJZ8IG6a6pBHkYmPLBQHCOEDwstb0WNXMGsmdOw==
+
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
@@ -2320,6 +2610,15 @@ babel-plugin-macros@2.7.1:
cosmiconfig "^6.0.0"
resolve "^1.12.0"
+babel-plugin-macros@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
+ integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ cosmiconfig "^7.0.0"
+ resolve "^1.19.0"
+
babel-plugin-named-asset-import@^0.3.5:
version "0.3.5"
resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.5.tgz#d3fa1a7f1f4babd4ed0785b75e2f926df0d70d0d"
@@ -2946,6 +3245,11 @@ clsx@^1.0.2:
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.0.4.tgz#0c0171f6d5cb2fe83848463c15fcc26b4df8c2ec"
integrity sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg==
+clsx@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
+ integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
+
co@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@@ -3151,6 +3455,11 @@ convert-source-map@^0.3.3:
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190"
integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA=
+convert-source-map@^1.5.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+ integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
+
cookie-signature@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
@@ -3227,6 +3536,17 @@ cosmiconfig@^6.0.0:
path-type "^4.0.0"
yaml "^1.7.2"
+cosmiconfig@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
+ integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
create-ecdh@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
@@ -3517,6 +3837,11 @@ csstype@^2.2.0, csstype@^2.5.2, csstype@^2.6.5, csstype@^2.6.7:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.8.tgz#0fb6fc2417ffd2816a418c9336da74d7f07db431"
integrity sha512-msVS9qTuMT5zwAGCVm4mxfrZ18BNc6Csd0oJAtiFMZ1FAx1CCvy2+5MDmYoix63LM/6NDbNtodCiGYGmFgO0dA==
+csstype@^3.0.2, csstype@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
+ integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
+
cyclist@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
@@ -4058,6 +4383,11 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
escodegen@^1.11.0, escodegen@^1.9.1:
version "1.12.0"
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541"
@@ -4620,6 +4950,11 @@ find-cache-dir@^3.0.0:
make-dir "^3.0.0"
pkg-dir "^4.1.0"
+find-root@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+ integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
+
find-up@3.0.0, find-up@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
@@ -4888,6 +5223,14 @@ get-stream@^4.0.0:
dependencies:
pump "^3.0.0"
+get-user-locale@^2.1.3:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/get-user-locale/-/get-user-locale-2.2.1.tgz#e7e9f365a202458a360d74c8a3516766d38402ae"
+ integrity sha512-3814zipTZ2MvczOcppEXB3jXu+0HWwj5WmPI6//SeCnUIUaRXu7W4S54eQZTEPadlMZefE+jAlPOn+zY3tD4Qw==
+ dependencies:
+ "@types/lodash.memoize" "^4.1.7"
+ lodash.memoize "^4.1.1"
+
get-value@^2.0.3, get-value@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
@@ -5143,6 +5486,13 @@ hoist-non-react-statics@^3.2.1, hoist-non-react-statics@^3.3.0:
dependencies:
react-is "^16.7.0"
+hoist-non-react-statics@^3.3.1:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
hosted-git-info@^2.1.4:
version "2.8.5"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c"
@@ -5378,6 +5728,14 @@ import-fresh@^3.0.0, import-fresh@^3.1.0:
parent-module "^1.0.0"
resolve-from "^4.0.0"
+import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
import-from@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
@@ -5599,6 +5957,13 @@ is-color-stop@^1.0.0:
rgb-regex "^1.0.1"
rgba-regex "^1.0.0"
+is-core-module@^2.9.0:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
+ integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
+ dependencies:
+ has "^1.0.3"
+
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -6709,7 +7074,7 @@ lodash._reinterpolate@^3.0.0:
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-lodash.memoize@^4.1.2:
+lodash.memoize@^4.1.1, lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
@@ -7873,6 +8238,11 @@ path-parse@^1.0.6:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
@@ -8770,6 +9140,15 @@ prompts@^2.0.1:
kleur "^3.0.3"
sisteransi "^1.0.3"
+prop-types@^15.6.0, prop-types@^15.8.1:
+ version "15.8.1"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.13.1"
+
prop-types@^15.6.2, prop-types@^15.7.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
@@ -8951,6 +9330,17 @@ react-app-polyfill@^1.0.5:
regenerator-runtime "^0.13.3"
whatwg-fetch "^3.0.0"
+react-calendar@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/react-calendar/-/react-calendar-4.1.0.tgz#25af7bb70a9122a3eed684a40980ef4d9ccbaa63"
+ integrity sha512-Ycvb2M6Xf+H8x2EvnygGy7sAe7qCUZdXyOnGV0cF60Mma0ls6dHFXcIaU4vsDjAejt3F8DqzbkYXNprMWy+43Q==
+ dependencies:
+ "@types/react" "*"
+ "@wojtekmaj/date-utils" "^1.1.3"
+ clsx "^1.2.1"
+ get-user-locale "^2.1.3"
+ prop-types "^15.6.0"
+
react-dev-utils@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-10.0.0.tgz#bd2d16426c7e4cbfed1b46fb9e2ac98ec06fcdfa"
@@ -8981,15 +9371,13 @@ react-dev-utils@^10.0.0:
strip-ansi "5.2.0"
text-table "0.2.0"
-react-dom@^16.12.0:
- version "16.12.0"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.12.0.tgz#0da4b714b8d13c2038c9396b54a92baea633fe11"
- integrity sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw==
+react-dom@^18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
+ integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
dependencies:
loose-envify "^1.1.0"
- object-assign "^4.1.1"
- prop-types "^15.6.2"
- scheduler "^0.18.0"
+ scheduler "^0.23.0"
react-error-overlay@^6.0.4:
version "6.0.4"
@@ -9006,6 +9394,16 @@ react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.1, react-i
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
+react-is@^16.13.1:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+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-scripts@3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.3.0.tgz#f26a21f208f20bd04770f43e50b5bbc151920c2a"
@@ -9076,15 +9474,23 @@ react-transition-group@^4.0.0, react-transition-group@^4.3.0:
loose-envify "^1.4.0"
prop-types "^15.6.2"
-react@^16.12.0:
- version "16.12.0"
- resolved "https://registry.yarnpkg.com/react/-/react-16.12.0.tgz#0c0a9c6a142429e3614834d5a778e18aa78a0b83"
- integrity sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA==
+react-transition-group@^4.4.5:
+ version "4.4.5"
+ resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1"
+ integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==
dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
+ "@babel/runtime" "^7.5.5"
+ dom-helpers "^5.0.1"
+ loose-envify "^1.4.0"
prop-types "^15.6.2"
+react@^18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
+ integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
read-pkg-up@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
@@ -9189,6 +9595,11 @@ regenerator-runtime@^0.11.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+regenerator-runtime@^0.13.11:
+ version "0.13.11"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3:
version "0.13.3"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5"
@@ -9412,6 +9823,15 @@ resolve@^1.14.2:
dependencies:
path-parse "^1.0.6"
+resolve@^1.19.0:
+ version "1.22.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
+ integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
+ dependencies:
+ is-core-module "^2.9.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -9589,6 +10009,13 @@ scheduler@^0.18.0:
loose-envify "^1.1.0"
object-assign "^4.1.1"
+scheduler@^0.23.0:
+ version "0.23.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
+ integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
+ dependencies:
+ loose-envify "^1.1.0"
+
schema-utils@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
@@ -9889,7 +10316,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-source-map@^0.5.0, source-map@^0.5.6:
+source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
@@ -10236,6 +10663,11 @@ stylehacks@^4.0.0:
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"
+stylis@4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7"
+ integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==
+
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@@ -10262,6 +10694,11 @@ supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
svg-parser@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.2.tgz#d134cc396fa2681dc64f518330784e98bd801ec8"
@@ -11256,6 +11693,11 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+yaml@^1.10.0:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
yaml@^1.7.2:
version "1.7.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2"