diff --git a/app/globals.css b/app/globals.css index d8d1928..0a00a54 100644 --- a/app/globals.css +++ b/app/globals.css @@ -852,9 +852,18 @@ html { } .bg-poster { - background-image: url(/public/assets/images/poster.png); + background-image: url(../public/assets/images/poster.png); width: 100%; height: 100%; background-repeat: no-repeat; background-size: cover; } + +.bg-stroke-circle { + background-image: url(../public/assets/images/stroke-circle.png); + background-size: cover; +} + +.MuiButton-loading .MuiButton-loadingIndicator { + color: #ffffff !important; +} diff --git a/components/doctor/Poster.js b/components/doctor/Poster.js deleted file mode 100644 index 0df8de7..0000000 --- a/components/doctor/Poster.js +++ /dev/null @@ -1,15 +0,0 @@ -import Image from "next/image"; -import Logo from "@/public/assets/images/logo.png"; - -function Poster() { - return ( -
-
- logo -

nobat724.com

-
-
- ); -} - -export default Poster; diff --git a/components/doctor/index.js b/components/doctor/index.js index 750329d..4fe2fe3 100644 --- a/components/doctor/index.js +++ b/components/doctor/index.js @@ -5,7 +5,7 @@ import AppointmentList from "./appointmentList"; import DetailDoctor from "./detailDoctor"; import Share from "./detailDoctor/Share"; import CustomLoading from "@/app/component/loading/Custom"; -import Poster from "./Poster"; +import Poster from "./poster"; function DoctorPage({ doctor }) { const [loading, setLoading] = useState(true); @@ -31,7 +31,6 @@ function DoctorPage({ doctor }) { -
diff --git a/components/doctor/poster/Address.js b/components/doctor/poster/Address.js new file mode 100644 index 0000000..9615085 --- /dev/null +++ b/components/doctor/poster/Address.js @@ -0,0 +1,17 @@ +import ClipBoard from "../../icons/ClipBoard"; + +function Address({ data }) { + return ( +
+
+ +

آدرس:

+
+

+ {data.location} +

+
+ ); +} + +export default Address; diff --git a/components/doctor/poster/ImageProfile.js b/components/doctor/poster/ImageProfile.js new file mode 100644 index 0000000..4a19750 --- /dev/null +++ b/components/doctor/poster/ImageProfile.js @@ -0,0 +1,11 @@ +import Image from "next/image"; + +function ImageProfile({ data }) { + return ( +
+ profile-user +
+ ); +} + +export default ImageProfile; diff --git a/components/doctor/poster/QrCode.js b/components/doctor/poster/QrCode.js new file mode 100644 index 0000000..314651e --- /dev/null +++ b/components/doctor/poster/QrCode.js @@ -0,0 +1,15 @@ +import Image from "next/image"; +import CodeSample from "@/public/assets/images/default-qr-code.png"; + +function QrCode() { + return ( +
+ +

+ nobat724/ahwaz.com +

+
+ ); +} + +export default QrCode; diff --git a/components/doctor/poster/Services.js b/components/doctor/poster/Services.js new file mode 100644 index 0000000..5eb02f6 --- /dev/null +++ b/components/doctor/poster/Services.js @@ -0,0 +1,23 @@ +import ClipBoard from "../../icons/ClipBoard"; +import CircleOrangeSm from "../../icons/CircleOrangeSm"; + +function Services({ data }) { + return ( +
+
+ +

خدمات:

+
+
    + {data.specialties.map((item, idx) => ( +
  • + +

    {item}

    +
  • + ))} +
+
+ ); +} + +export default Services; diff --git a/components/doctor/poster/Telefon.js b/components/doctor/poster/Telefon.js new file mode 100644 index 0000000..78828c9 --- /dev/null +++ b/components/doctor/poster/Telefon.js @@ -0,0 +1,20 @@ +import TelefonPoster from "@/components/icons/TelefonPoster"; + +function Telefon({ data }) { + return ( +
+
+ +

تلفن:

+
+

+ {data.phone} +

+

+ {data.phone} - {data.phone} +

+
+ ); +} + +export default Telefon; diff --git a/components/doctor/poster/index.js b/components/doctor/poster/index.js new file mode 100644 index 0000000..0381138 --- /dev/null +++ b/components/doctor/poster/index.js @@ -0,0 +1,35 @@ +import Image from "next/image"; +import Logo from "@/public/assets/images/logo.png"; +import Services from "./Services"; +import Address from "./Address"; +import Telefon from "./Telefon"; +import ImageProfile from "./ImageProfile"; +import QrCode from "./QrCode"; + +function Poster({ data }) { + return ( +
+
+
+ logo +

nobat724.com

+
+

+ {data.name} +

+

+ تخصص: {data.expertise} +

+ +
+ +
+
+ + +
+
+ ); +} + +export default Poster; diff --git a/components/icons/AddressPoster.js b/components/icons/AddressPoster.js new file mode 100644 index 0000000..cdbce82 --- /dev/null +++ b/components/icons/AddressPoster.js @@ -0,0 +1,24 @@ +function AddressPoster() { + return ( + + + + + ); +} + +export default AddressPoster; diff --git a/components/icons/CircleOrangeSm.js b/components/icons/CircleOrangeSm.js new file mode 100644 index 0000000..177d462 --- /dev/null +++ b/components/icons/CircleOrangeSm.js @@ -0,0 +1,15 @@ +function CircleOrangeSm() { + return ( + + + + ); +} + +export default CircleOrangeSm; diff --git a/components/icons/ClipBoard.js b/components/icons/ClipBoard.js new file mode 100644 index 0000000..89f8023 --- /dev/null +++ b/components/icons/ClipBoard.js @@ -0,0 +1,37 @@ +function ClipBoard() { + return ( + + + + + + ); +} + +export default ClipBoard; diff --git a/components/icons/TelefonPoster.js b/components/icons/TelefonPoster.js new file mode 100644 index 0000000..aeac489 --- /dev/null +++ b/components/icons/TelefonPoster.js @@ -0,0 +1,34 @@ +function TelefonPoster() { + return ( + + + + + + ); +} + +export default TelefonPoster; diff --git a/components/register/LogInPage.js b/components/register/LogInPage.js index 466e315..4d378f3 100644 --- a/components/register/LogInPage.js +++ b/components/register/LogInPage.js @@ -1,13 +1,13 @@ import Field from "@/app/component/element/Field"; -import { formatPhoneNumber, validatePhoneNumber } from "@/helper"; +import { changeNumToDefault, formatPhoneNumber, validatePhoneNumber } from "@/helper"; import { request } from "@/services/response"; -import { Button, InputAdornment } from "@mui/material"; +import { InputAdornment, Button } from "@mui/material"; import Link from "next/link"; import { useState } from "react"; -function LogInPage({ setIsSendMsg, setStep, matchedCity }) { - const [num, setNum] = useState(""); +function LogInPage({ setIsSendMsg, num, setNum, matchedCity }) { const [error, setError] = useState({ valid: true, text: "" }); + const [loading, setLoading] = useState(false); const handleChange = (val) => { const formatted = formatPhoneNumber(val); @@ -15,13 +15,13 @@ function LogInPage({ setIsSendMsg, setStep, matchedCity }) { setError(checkedNum); setNum(formatted); }; - const handleReq = () => { + setLoading(true); request - .auth("/") - .then(() => { - setIsSendMsg && setIsSendMsg(true); - setStep && setStep((prev) => prev + 1); + .sendCode(changeNumToDefault(num)) + .then((response) => { + setLoading(false); + if (response) setIsSendMsg(true); }) .catch(() => { setLoading(false); @@ -80,6 +80,7 @@ function LogInPage({ setIsSendMsg, setStep, matchedCity }) { */}
- !link && e.preventDefault()}> - - + ); } diff --git a/components/register/element/OTPForm.js b/components/register/element/OTPForm.js index dd62536..db1d0b3 100644 --- a/components/register/element/OTPForm.js +++ b/components/register/element/OTPForm.js @@ -1,28 +1,26 @@ -import { useState } from "react"; - -function OTPForm({ handleOTP }) { - const [code, setCode] = useState(""); - +function OTPForm({ index, value, onChange, inputRef, isError }) { return ( { - const value = e.target.value; - - if (/^\d+$/.test(value) && value.length < 2) { - setCode(value); - handleOTP(e); - } else { - setCode(""); - e.target.value = ""; + const val = e.target.value; + if (/^\d?$/.test(val)) { + onChange(index, val); + } + }} + onKeyDown={(e) => { + if (e.key === "Backspace" && !e.target.value) { + onChange(index, "backspace"); } }} className={`border otp-field border-solid border-[#ADB5BD] rounded-[6px] text-center transition-all duration-500 ease-out - outline-none focus:!border-[1px] focus:!border-solid focus:!border-[#5559CE] - focus:!outline-[1px] focus:!outline-solid focus:!outline-[#5559CE] bg-transparent text-[#525252] - w-[43px] h-[43px] sm:w-[45px] sm:h-[45px] md:w-[47px] md:h-[47px] lg:w-[48px] lg:h-[48px] - ${code && "!border-[1px] !border-solid !border-[#5559CE]"} - `} + outline-none focus:!border-[1px] focus:!border-solid focus:!border-[#5559CE] + focus:!outline-[1px] focus:!outline-solid focus:!outline-[#5559CE] bg-transparent text-[#525252] + w-[43px] h-[43px] sm:w-[45px] sm:h-[45px] md:w-[47px] md:h-[47px] lg:w-[48px] lg:h-[48px] + ${value && "!border-[1px] !border-solid !border-[#5559CE]"} + ${isError && "!border-[#d32f2f]"}`} /> ); } diff --git a/components/register/index.js b/components/register/index.js index 163f395..0231d9c 100644 --- a/components/register/index.js +++ b/components/register/index.js @@ -7,14 +7,22 @@ import LayoutRegister from "./LayoutRegister"; function RegisterPage({ matchedCity }) { const [isSendMsg, setIsSendMsg] = useState(false); + const [num, setNum] = useState(""); return ( {isSendMsg ? ( - + ) : ( diff --git a/helper/index.js b/helper/index.js index 9e056c9..4571021 100644 --- a/helper/index.js +++ b/helper/index.js @@ -174,15 +174,14 @@ export const filterList = (data) => { export function getCleanNumberValue(value, defaultValue = 0) { if (typeof value !== "string") value = String(value); - // Convert Persian and Arabic digits to English digits const persianArabicToEnglish = value .replace(/[\u06F0-\u06F9]/g, (d) => String(d.charCodeAt(0) - 0x06f0)) .replace(/[\u0660-\u0669]/g, (d) => String(d.charCodeAt(0) - 0x0660)); - // Remove non-numeric characters except dots (for decimal support) const cleaned = persianArabicToEnglish.replace(/[^0-9.]/g, ""); - // Return number or default if invalid const number = parseFloat(cleaned); return isNaN(number) ? defaultValue : number; } + +export const changeNumToDefault = (num) => `09${num.replace(/\D/g, "")}`; diff --git a/package-lock.json b/package-lock.json index 6c26791..32c29ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,12 @@ "version": "0.1.0", "dependencies": { "@emotion/cache": "^11.11.0", - "@emotion/react": "^11.13.3", - "@emotion/styled": "^11.13.0", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", "@maptiler/sdk": "^2.4.0", "@material-ui/core": "^4.11.2", - "@mui/material": "^5.16.7", + "@mui/icons-material": "^7.1.0", + "@mui/material": "^7.1.0", "@mui/styled-engine-sc": "^6.0.0-alpha.18", "@mui/x-charts": "^7.16.0", "@mui/x-date-pickers": "^7.17.0", @@ -2042,13 +2043,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", + "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==", "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } @@ -3804,36 +3802,62 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.16.11", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.11.tgz", - "integrity": "sha512-2eVDGg9OvIXNRmfDUQyKYH+jNcjdv1JkCH5F2YDgUye5fMX5nxGiYHAUe1BXaXyDMaLSwXC7LRksEKMiIQsFdw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.1.0.tgz", + "integrity": "sha512-E0OqhZv548Qdc0PwWhLVA2zmjJZSTvaL4ZhoswmI8NJEC1tpW2js6LLP827jrW9MEiXYdz3QS6+hask83w74yQ==", "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, - "node_modules/@mui/material": { - "version": "5.16.11", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.11.tgz", - "integrity": "sha512-uoc67oecKdnVKaMHBVE433YrMuxQs22xY5nIjRb5sAPB+GaeZQWp8brQ3/adeH6k2IDa8+9i2IVd4fNLuvHSvA==", + "node_modules/@mui/icons-material": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.1.0.tgz", + "integrity": "sha512-1mUPMAZ+Qk3jfgL5ftRR06ATH/Esi0izHl1z56H+df6cwIlCWG66RXciUqeJCttbOXOQ5y2DCjLZI/4t3Yg3LA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/core-downloads-tracker": "^5.16.11", - "@mui/system": "^5.16.8", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.8", + "@babel/runtime": "^7.27.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^7.1.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.1.0.tgz", + "integrity": "sha512-ahUJdrhEv+mCp4XHW+tHIEYzZMSRLg8z4AjUOsj44QpD1ZaMxQoVOG2xiHvLFdcsIPbgSRx1bg1eQSheHBgvtg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.1", + "@mui/core-downloads-tracker": "^7.1.0", + "@mui/system": "^7.1.0", + "@mui/types": "^7.4.2", + "@mui/utils": "^7.1.0", "@popperjs/core": "^2.11.8", - "@types/react-transition-group": "^4.4.10", - "clsx": "^2.1.0", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1", - "react-is": "^18.3.1", + "react-is": "^19.1.0", "react-transition-group": "^4.4.5" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3842,6 +3866,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^7.1.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -3853,23 +3878,26 @@ "@emotion/styled": { "optional": true }, + "@mui/material-pigment-css": { + "optional": true + }, "@types/react": { "optional": true } } }, "node_modules/@mui/material/node_modules/@mui/private-theming": { - "version": "5.16.8", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.8.tgz", - "integrity": "sha512-3Vl9yFVLU6T3CFtxRMQTcJ60Ijv7wxQi4yjH92+9YXcsqvVspeIYoocqNoIV/1bXGYfyWu5zrCmwQVHaGY7bug==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.1.0.tgz", + "integrity": "sha512-4Kck4jxhqF6YxNwJdSae1WgDfXVg0lIH6JVJ7gtuFfuKcQCgomJxPvUEOySTFRPz1IZzwz5OAcToskRdffElDA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/utils": "^5.16.8", + "@babel/runtime": "^7.27.1", + "@mui/utils": "^7.1.0", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3886,18 +3914,20 @@ } }, "node_modules/@mui/material/node_modules/@mui/styled-engine": { - "version": "5.16.8", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.8.tgz", - "integrity": "sha512-OFdgFf8JczSRs0kvWGdSn0ZeXxWrY0LITDPJ/nAtLEvUUTyrlFaO4il3SECX8ruzvf1VnAxHx4M/4mX9oOn9yA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.1.0.tgz", + "integrity": "sha512-m0mJ0c6iRC+f9hMeRe0W7zZX1wme3oUX0+XTVHjPG7DJz6OdQ6K/ggEOq7ZdwilcpdsDUwwMfOmvO71qDkYd2w==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.9", - "@emotion/cache": "^11.11.0", + "@babel/runtime": "^7.27.1", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", + "@emotion/sheet": "^1.4.0", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3918,22 +3948,22 @@ } }, "node_modules/@mui/material/node_modules/@mui/system": { - "version": "5.16.8", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.8.tgz", - "integrity": "sha512-L32TaFDFpGIi1g6ysRtmhc9zDgrlxDXu3NlrGE8gAsQw/ziHrPdr0PNr20O0POUshA1q14W4dNZ/z0Nx2F9lhA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.1.0.tgz", + "integrity": "sha512-iedAWgRJMCxeMHvkEhsDlbvkK+qKf9me6ofsf7twk/jfT4P1ImVf7Rwb5VubEA0sikrVL+1SkoZM41M4+LNAVA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.9", - "@mui/private-theming": "^5.16.8", - "@mui/styled-engine": "^5.16.8", - "@mui/types": "^7.2.15", - "@mui/utils": "^5.16.8", - "clsx": "^2.1.0", + "@babel/runtime": "^7.27.1", + "@mui/private-theming": "^7.1.0", + "@mui/styled-engine": "^7.1.0", + "@mui/types": "^7.4.2", + "@mui/utils": "^7.1.0", + "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", @@ -3957,6 +3987,53 @@ } } }, + "node_modules/@mui/material/node_modules/@mui/types": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.2.tgz", + "integrity": "sha512-edRc5JcLPsrlNFYyTPxds+d5oUovuUxnnDtpJUbP6WMeV4+6eaX/mqai1ZIWT62lCOe0nlrON0s9HDiv5en5bA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.1" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/@mui/utils": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.1.0.tgz", + "integrity": "sha512-/OM3S8kSHHmWNOP+NH9xEtpYSG10upXeQ0wLZnfDgmgadTAk5F4MQfFLyZ5FCRJENB3eRzltMmaNl6UtDnPovw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.27.1", + "@mui/types": "^7.4.2", + "@types/prop-types": "^15.7.14", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@mui/material/node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -3967,9 +4044,9 @@ } }, "node_modules/@mui/material/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", + "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", "license": "MIT" }, "node_modules/@mui/private-theming": { @@ -19820,12 +19897,6 @@ "node": ">=4" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", diff --git a/package.json b/package.json index 1ff5161..e471a65 100644 --- a/package.json +++ b/package.json @@ -3,18 +3,19 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "cross-env HOST=yazd-nobat.localhost PORT=3000 next dev", + "dev": "cross-env HOST=localhost PORT=5170 next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@emotion/cache": "^11.11.0", - "@emotion/react": "^11.13.3", - "@emotion/styled": "^11.13.0", + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", "@maptiler/sdk": "^2.4.0", "@material-ui/core": "^4.11.2", - "@mui/material": "^5.16.7", + "@mui/icons-material": "^7.1.0", + "@mui/material": "^7.1.0", "@mui/styled-engine-sc": "^6.0.0-alpha.18", "@mui/x-charts": "^7.16.0", "@mui/x-date-pickers": "^7.17.0", diff --git a/public/assets/images/default-qr-code.png b/public/assets/images/default-qr-code.png new file mode 100644 index 0000000..fc40a97 Binary files /dev/null and b/public/assets/images/default-qr-code.png differ diff --git a/public/assets/images/stroke-circle.png b/public/assets/images/stroke-circle.png new file mode 100644 index 0000000..ccbb486 Binary files /dev/null and b/public/assets/images/stroke-circle.png differ diff --git a/services/response.js b/services/response.js index 7dc40ed..13b4c0a 100644 --- a/services/response.js +++ b/services/response.js @@ -1,21 +1,29 @@ import api from "./api"; -import Cookies from "universal-cookie"; export const request = { - auth: (grant_type, client_id, client_secret, username, password) => + sendCode: (mobile_number) => + api.post( + "api/v1/user/auth", + { mobile_number }, + { + headers: { + Authorization: "", + }, + } + ), + getToken: (grant_type, client_id, client_secret, mobile_number, code) => api.post( "oauth/token", { grant_type, client_id, client_secret, - username, - password, + mobile_number, + code, }, { headers: { Authorization: "", - "Content-Type": "application/x-www-form-urlencoded", }, } ),